Pascal/Turbo Pascal - sombras

 
Vista:

sombras

Publicado por Maurico (1 intervención) el 21/02/2002 04:33:12
como puedo hacer sombras como las de los menus del tp??
de antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

sombras

Publicado por CESAR (2 intervenciones) el 04/05/2011 03:46:00
{este programa crea ventanas de trabajo con color de fondo de borde, relleno y sombras de forma profesional usando la memoria de video para cambiar su atributo , asi como salvar la pantalla ya que asi como aparece la ventana desaparece}
{espero que te sirva}

program salvapantalla;
uses
crt;
type
tpos=record
car:char;
attr:byte;
end;

tlinea=array [1..80] of tpos;
tpant=array [1..25] of tlinea;

var
x,y:integer;
pantalla:tpant;
procedure salvar_pantalla(var panta:tpant);
var
p:tpant absolute $b800:$0000;
begin
panta:=p;
end;
procedure restaurar_pantalla(panta:tpant);
var x,y:byte;
begin
for y:=1 to 23 do
for x:=1 to 80 do
begin
gotoxy(x,y);write(panta[y,x].car);
end;
end;
procedure sombra(col1,fil1,col2,fil2:byte);
var
p:tpant absolute $b800:$0000;
x,y:byte;
begin
for x:=col1+1 to col2+1 do
begin
gotoxy(x,fil2+1);p[fil2+1,x].attr:=8;
end;
for y:=fil1+1 to fil2+1 do
begin
gotoxy(col2+1,y);p[y,col2+1].attr:=8;
end;

end;
procedure box(c1,f1,c2,f2,tipo,colorfondo,colorborde:byte);
const
simple=' { acsii de lineas simples } ';
doble=' { acsii de lineas dobles } ';
var
x,y:byte;
cuadro:string;
begin
textbackground(colorfondo);
textcolor(colorborde);
for x:=c1+1 to c2-1 do
for y:=f1+1 to f2-1 do
begin
gotoxy(x,y);write(' ');
end;
if tipo=1
then
begin
cuadro:=simple;
end
else
begin
cuadro:=doble;
end;
for x:=(c1+1) to (c2-1) do
begin
gotoxy(x,f1);write(cuadro[6]);
gotoxy(x,f2);write(cuadro[6]);
end;
for y:=(f1+1) to (f2-1) do
begin
gotoxy(c1,y);write(cuadro[1]);
gotoxy(c2,y);write(cuadro[1]);
end;
gotoxy(c1,f1);write(cuadro[2]);
gotoxy(c2,f1);write(cuadro[3]);
gotoxy(c1,f2);write(cuadro[4]);
gotoxy(c2,f2);write(cuadro[5]);
sombra(c1,f1,c2,f2);
end;
begin
clrscr;
for y:=1 to 25 do
for x:=1 to 80 do
begin
gotoxy(x,y);write('2');
end;
readln;
salvar_pantalla(pantalla);
box(5,5,60,10,2,1,15);
readln;
restaurar_pantalla(pantalla);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sombras

Publicado por ranchal (1 intervención) el 21/02/2002 11:16:27
No se si has probado a utilizar un simbolo ASCII que es como una sombra. No se el número pero es lo que utiliza TP para esto. Si tienes la lista ASCII búscalo sino tendrás que ir probando. Para ello deja pulsado ALT+un numero hasta 256 y te saldrán simbolos al soltar. No se si te he sido de ayuda, pero lo que pascal usa es eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sombras

Publicado por Diego Romero (282 intervenciones) el 23/02/2002 02:16:13
Mira esta ejemplo:
http://www.geocities.com/diegofrom/archivos/menupas.zip
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar