Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


14.3: Más órdenes gráficas.

Las órdenes gráficas más habituales son: Creo que no tiene sentido que me enrolle con ellas. Voy a poner sólo un ejemplo que use las más frecuentes:

 {--------------------------}
 {  Ejemplo en Pascal:      }
 {                          }
 {    Funciones gráficas    }
 {    más frecuentes        }
 {    DEMOGRAF.PAS          }
 {                          }
 {  Este fuente procede de  }
 {  CUPAS, curso de Pascal  }
 {  por Nacho Cabanes       }
 {                          }
 {  Comprobado con:         }
 {    - Turbo Pascal 7.0    }
 {--------------------------}

 program DemoGraf;

 uses graph;

 var
   driver, modo: integer;
   x, y: integer;
   i: integer;

 begin
   driver := detect;
   initgraph(driver, modo, '');
   randomize;                 { Comienzo a generar números al azar }
   line(0,0,639,479);         { Línea fija }
   for i := 1 to 200 do       { 200 puntos }
     putpixel(random(640), random(480), random(15)+1);
   for i := 1 to 50 do        { 50 círculos }
     begin
     setcolor(random(15)+1);
     circle(random(640), random(480), random(50));
     end;
   for i := 1 to 30 do        { 30 rectángulos }
     begin
     x := random(500);
     y := random(400);
     setcolor(random(15)+1);
     rectangle(x, y, x+random(140), y+random(80));
     end;
   for i := 1 to 15 do        { 15 rectángulos }
     begin
     x := random(500);
     y := random(400);
     setcolor(random(15)+1);
     setfillstyle(random(11), random(15)+1);
     bar(x, y, x+random(140), y+random(80));
     end;
                              { Recuadro con texto en su interior }
   setfillstyle(SolidFill, LightBlue);
   SetColor(Yellow);
   Bar3D(93,93,440,112, 5, true);
   setcolor(Red);
   OutTextXY(99,99,'Prueba del modo gráfico desde Turbo Pascal');
   setcolor(White);
   OutTextXY(100,100,'Prueba del modo gráfico desde Turbo Pascal');
   readln;
   closegraph;
 end. 

Espero que todo se entienda por si solo. Los principales cambios (además del hecho de emplear algunas órdenes nuevas para nosotros) son los siguientes:


Un comentario obligado: Nuevamente, este programa funciona sin cambios en TMT y FPK/Free Pascal, pero hay un posible peligro: estamos detectando la tarjeta gráfica que existe en nuestro ordenador y dejando que el propio compilador elija el modo gráfico dentro de ese tipo de tarjeta. Esto es peligroso con estos compiladores, que reconocen tarjetas más modernas y permiten acceder a los modos VESA, con más puntos y/o más colores. Así, este programa probado con mi ordenador y con TMT cambia a un modo que no es el de 640x480 puntos con 16 colores que usaría Turbo Pascal, sino a otro con mayor número de colores, mientras que FPK deja mi pantalla “en negro”, posiblemente porque esté cambiando a un modo de pantalla de mi alta resolución, que sí permita mi tarjeta gráfica pero no mi pantalla. Con Free Pascal sí funciona correctamente, aunque reserva un tamaño de pantalla mayor de 640x480. Su apariencia es ésta:

demografpas.png

Podemos evitar este tipo de posibles problemas no dejando que el compilador detecte cual es nuestra tarjeta gráfica, sino obligando nosotros, como hicimos en el ejemplo anterior, cambiando esta línea

driver := detect;

por estas dos

Driver := Vga; { Para pantalla VGA }
Modo := VgaHi; { Modo 640x480, 16 colores }