graficas en pascal
Post on 28-Nov-2014
522 Views
Preview:
TRANSCRIPT
La pantalla en PASCAL
Configurar la pantalla en PASCAL
El lenguaje PASCAL trabaja en entorno de MS - DOS, o sea en modo texto, esto no quiere decir que no puedo manejar modo grafico.
La instrucción USES, de la sección de Declaraciones y Definiciones, declara el tipo de librería que se ocupará CRT identifica Tubo de Rayos Catódicos.
La instrucción TEXTMODE(), en el Cuerpo del Programa identifica las Columnas y Renglones que tendrá la pantalla, y pueden ser de tres formas.
Configurar la pantalla en PASCAL
Textmode(CO80) = configura la pantalla 80 Columnas y 25 Renglones.
80
25
Begin Textmode(CO80); Textcolor(4);Textbackground(0); clrscr; gotoxy(40,12);write(‘Prueba’);End.
Pascal en modo Gráfico
USES CRT, GRAPH ;
Program prueba;
uses CRT, GRAPH;Mientras que el modo texto tiene por estándar 80 o 40 columnas X 25 filas y la unidad de medida es el carácter.
En modo gráfico se tiene una resolución de 640 columnas X 480 filas, y la unidad se llama pixels.
Configurar la pantalla en PASCAL
40
25
Acerca la lupa a la pantalla y enfoca cualquier carácter, veras que esta constituido por muchos puntos. Pues bien esos son los famosos pixels.
50
80
Declaramos dos variables de tipo Integer:
Program prueba; USES CRT, GRAPH; var Gd, Gm: Integer; begin Gd := Detect; {Se autodetecta el tipo de tarjeta gráfica} InitGraph(Gd, Gm, ‘C: TP BGI'); {Inicializa el modo gráfico} if GraphResult <> grOk then { pregunta si esta en gráfico} begin textmode(co80); textcolor(4); textbackground(0); clrscr; gotoxy(30,12);write(‘No puedo entrar a gráficos ); readkey(); Halt(1); end;
InitGraph(Gd, Gm, ‘C: TP BGI');
- Esta instrucción inicia el modo gráfico, e indica donde esta la carpeta “BGI” que es donde están los archivos gráficos.
if GraphResult <> grOk then
-Si el programa pasa la condición indica que ya esta en modo grafico, si no pasa el programa no puede entrar a modo gráfico y se sale.
Setcolor(Color); { Fija el color que se vaya a pintar }
Setbkcolor(color); { Fija el color del fondo de la pantalla }
Cleardevice; { limpia la pantalla, modo gráfico }
{ aquí inician las instrucciones gráficas }
CloseGraph; {Cierra el modo gráfico}
END.
Program prueba; use crt, graph; var GD,GM,x,y,z Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0); clrscr; gotoxy(25,12);write(‘No puedo entrar a graficas ‘); readkey; halt(1); end; setcolor(14); setbkcolor(0); cleardevice; circle( 320,240,150); readkey; closegraph;End.
Primeras instrucciones
Circle(Columna, Fila, Radio); { Pinta un circulo en la columna, fila, con un radio que se mide en Pixels; }ejemplo:circle(320, 240, 150);Dibuja un circulo en la columna 320, fila 240 de 150 pixels de radio;
0 639
0
479
0 6390
479
0 6393200
479
240
320
240
6390
160 480
120
360
320,240
LineLine(X1, Y1, X2, Y2);Traza una línea recta entre 2 puntos, X1, Y1 son el punto inicial y X2, Y2 el punto final, donde: X1 = Columna InicialY1 = Fila InicialX2 = Columna FinalY2 = Fila Fina.
Dibujar una línea : para trazar una línea se utiliza el comando LINE
LINE( Columna , Renglón, Columna, Renglón )
inicial final
LINEAS
Program prueba; use crt, graph; var GD,GM,x,y,z Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0); clrscr; gotoxy(25,12);write(‘No puedo entrar a graficas ‘); readkey; halt(1); end; setcolor(14); setbkcolor(0); cleardevice; line(0,0,639,479); Line(160,120, 480,360) readkey; closegraph;End.
Estilos De Línea Y Rellenos
SetlineStyle(Estilo_de_linea, Patrón, Grosor);
Estilo_de_linea: existen cuatro estilos de línea predefinidos y uno que el usuario define como se muestra a continuación:
SolidLn = 0 línea solida(por defecto)DottedLn = 1 línea punteada CenterLn = 2 línea discontinua centrada DashedLn = 3 línea discontinua UserBitLn = 4 línea definida por el usuario
Patrón : Este es un patrón de 16 bits definido a medida del usuario con valores en hexadecimal, si no se define ninguno, se coloca el valor por omisión que es 0.
Grosor : Este parámetro fija el ancho en pixelesNormWidth normal 1 pixel de grosorThickWidth Grueso 3 pixeles de grosor
SetlineStyle( 0, 0, 3);
LinetoTraza una línea desde donde se quedo hasta lo indicado por LINETO(columna, renglón). Al borrar la pantalla el apuntador regresa a las coordenadas 0,0, de aquí LINETO(639,479); se traza una línea que cruza la pantalla. Otra instrucción utilizada es MOVETO(C,R), que mueve la pluma a las coordenadas columna, renglón
Program prueba; use crt, graph; var GD,GM,x,y,z : Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0); clrscr; gotoxy(25,12);write(‘No puedo entrar a graficas ‘); readkey; halt(1); { abandona el programa } end; setcolor(4); setbkcolor(0); cleardevice; { se pone en 0,0} Lineto(639,0); Lineto(639,479); Lineto(0,479); Lineto(0,0); readkey; closegraph; End.
0 6393200
479
240
320
240
6390
160 480
120
360
320,240
Analizando el dibujo anterior vamos hacer unas líneas con LINETO y MOVETO
Setcolor(14); Setbkcolor(0); cleardevice; moveto(320,120); Lineto(160,240); Setcolor(9); Lineto(320,360); Setcolor(10); Lineto(480,240); Setcolor(4); Lineto(320,120); Readkey;
{ Practica: cruza con dos líneas este cuadrado }
Rectangle
Rectangle(X1, Y1, X2, Y2);Dibuja un rectángulo entre 2 puntos, X1, Y1 son el punto inicial y X2, Y2 el punto final, donde: X1 = Columna InicialY1 = Fila InicialX2 = Columna FinalY2 = Fila Final.
Program prueba; use crt, graph; var GD,GM,x,y,z : Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0); clrscr; gotoxy(25,12);write(‘No puedo entrar a graficas ‘); readkey; halt(1); { abandona el programa } end; setcolor(14); setbkcolor(0); cleardevice; rectangle(0,0,639,479); setcolor(5); rectangle(160,120,480,360); readkey; closegraph; End.
PUTPIXEL
Putpixel(Columna, Fila, Color);Pinta un pixel (Puntito) en la columna, fila con el color determinado;
Program prueba; use crt, graph; var GD,GM, x , y , z :Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0);clrscr; gotoxy(25,12);write(‘No puedo entrar a graficas ‘); readkey; halt(1); end; Rectangle(0,0,639,479); Repeat PutPixel(Random(getmaxX),Random(getmaxY),random(16)); Delay(20); until KeyPressed; readkey; CloseGraph; End.
B A R
Bar(X1, Y1, X2, Y2);Dibuja un rectángulo relleno (el estilo del relleno y color de este se fijan mediante los procedimientos setfillstyle y setcolor) entre 2 puntos, X1, Y1 son el punto inicial y X2, Y2 el punto final, donde: X1 = Columna InicialY1 = Fila InicialX2 = Columna FinalY2 = Fila Final
Program prueba; use crt, graph; var GD,GM, x , y , z :Integer; Begin GD:=DETECT; INITGRAPH(GD,GM,’C: TP BGI’); if GraphResult <> grOk then begin textmode(co80); textcolor(4); textbackground(0);clrscr; gotoxy(25,12); write(‘ No puedo entrar a gráficas ‘); readkey; halt(1); end; Rectangle(0,0,639,479); Repeat PutPixel(Random(getmaxX),Random(getmaxY),random(16)); Delay(20); until KeyPressed; readkey; CloseGraph; End.
Bar3D(X1, Y1, X2, Y2, profundidad, tapada);Dibuja un rectángulo en tercera dimensión entre 2 puntos, X1, Y1 son el punto inicial y X2, Y2 el punto final, profundidad es la distancia desde el borde hacia el interior y tapada es una variable de tipo BOOLEAN que la dibuja con la tapa superior cuando esta en True, y sin ella cuando esta en False. X1 = Columna InicialY1 = Fila InicialX2 = Columna FinalY2 = Fila FinalProfundidad = Distancia de el borde hacia el interiorTapada = Tapa superior si esta en verdadero, sin ella cuando es falso.
Setfillstyle(Estilo_de_Relleno, Color);
Sirve para dar el estilo de relleno para cualquier área cerrada(un círculo, rectángulo, una curva ), donde:
Estilo_de_Relleno
EmptyFill = 0 , Con el color del fondo. SolidFill = 1 , Relleno con el color especificado. LineFill = 2 , Relleno con ---. LtSlashFill = 3, Relleno con ///. SlashFill = 4 , Relleno con ///. BkSlashFill = 5, Relleno con \\\ . LtBkSlashFill = 6, Relleno con \\\. HatchFill = 7, Cuadriculado fino. XHatchFill = 8, Cuadriculado grueso. InterleaveFill = 9, Intercala líneas. WideDotFill = 10, Puntos muy dispersos. CloseDotFill = 11, Puntos con poca separación. UserFill = 12 Patrón de rellenado definido por el usuario.
Setcolor(15) setbkcolor(0), cleardevice;Rectangle(0,0,639,479);X:=0;Repeat setcolor(14); line(320,240,x,0); setcolor(4); line(320,240,x,479); delay(10); x:=x+10;Until (x< 640);Readkey;
Setcolor(15) setbkcolor(0), cleardevice;Rectangle(0,0,639,479);X:=0;Repeat setcolor(14); line(320,0,x,479); setcolor(4); line(320,479,x,0); delay(10); x:=x+10;Until (x< 640);Readkey;
Rutinas Para Escritura De Texto SetTextStyle(Tipo_de_letra, Orientación,Tamaño);
Permite establecer el tipo de letra, la orientación y el tamaño de está, donde
Tipo_de_letra : Es un número cualquiera entre 0 y 10;
Orientación: 0 si es Horizontal, 1 Vertical
Tamaño: Un número de tipo Word.
OutText(Cadena_De_Texto);
Imprime la Cadena_de_Texto.
OutTextXY(Columna,Fila,Cadena_De_Texto); Imprime la Cadena_de_Texto en la Columna, Fila.Tanto para Outext como Outextxy son afectadas por setcolor, settextjustify y settextstyle.
Program Tipos_De_Letra; Uses crt, graph; var Gd, Gm : Integer; i : byte; begin GD := Detect; InitGraph(GD, GM, ' C:/TP/BGI'); if GraphResult <> grOk then Halt(1); for i:=0 to 10 do begin settextstyle(i,0,1); outtextxy(1,1*10,'Tutor de Programación');delay(50) end; readkey; CloseGraph;end.
top related