MI PC
Dibujar en Windows
Windows es un entorno gráfico. Esta afirmación, que no debería sorprender a nadie, tiene algunas
implicaciones en el tema que nos ocupa: por su propia naturaleza, es de esperar que el Sistema Operativo
nos brinde facilidades a la hora de hacer gráficos. Por suerte, esta vez nuestras esperanzas se confirman.
La graficación en Windows se basa en una interfacellamada GDI (Graphics Device Interface), que se
presenta al programador en forma de estructuras de datos, tipos y funciones; lo que llamamos API
(Application Programming Interface). La función de esta API es actuar como una capa intermedia entre los
dispositivos físicos (pantalla, placas de video, etc.) y nuestros programas, lo que significa que no tendremos
que crear drivers y otras cosas raraspara permitir a nuestros programas trabajar con tal o cual placa de
video; si el equipo está ejecutando Windows, entonces nuestro programa puede correr en ese equipo1.
Esta API nos simplifica un montón las cosas... aunque todavía pueden ser más simples, como lo demuestra
Delphi al encapsular las estructuras y funciones en objetos. Nos dedicaremos aquí a mostrar la forma en que
se trabaja congráficos en Delphi, incluyendo cuando sea necesario alguna interacción con la API.
Hay dos maneras de poner gráficos en las aplicaciones de Delphi:
?
Usar componentes gráficos en tiempo de diseño (como los componentes tImage o los botones de
clase tBitBtn)
?
Dibujarlos en tiempo de ejecución
Hemos visto ya el uso de los componentes tImage y los botones tBitBtn. Ahora nos centraremos en lacreación de gráficos en tiempo de ejecución.
Para graficar en Delphi trabajamos con un objeto llamado Canvas (se podría traducir como “Lienzo”).
Representa la superficie de graficación, con propiedades tales como la pluma o el pincel que vamos a usar.
Además, tiene métodos que nos permiten dibujar primitivas -rectángulos, círculos, elipses, texto, etcdirectamente sobre su superficie.
CoordenadasEs importante entender cómo se toma el sistema de ejes
coordenados en la pantalla. Para cualquier componente,
la coordenada X corre desde el borde izquierdo hacia el
derecho, igual que en matemática; en cambio, la
coordenada Y se toma desde arriba hacia abajo, al
contrario de la norma seguida usualmente por los
matemáticos. Esto significa que el centro de
coordenadas está en la esquinasuperior izquierda del
componente (Fig. ???).
O
X
Y
Para definir un punto se necesitan dos coordenadas, x e
Figura 1: sistema de coordenadas gráfico
y. Se pueden pedir las dos coordenadas por separado,
como dos parámetros de tipo entero, o bien utilizar una estructura creada al efecto: el registro Tpoint. Está
1
Teóricamente. Nunca falta alguna desviación de los estándares porparte de los fabricantes, por lo
que puede suceder que hagan falta algunos retoques en los drivers para llevar todo a buen puerto.
Normalmente, con un mensaje a los fabricantes basta para tener en pocos días un controlador actualizado
disponible en Internet.
definido en la unit Windows, de la siguiente manera:
type TPoint = record
X: Longint;
Y: Longint;
end;
Como vemos, nada más queuna forma cómoda de tener las dos coordenadas “en un solo paquete”. Existe
incluso una función que toma dos números y los devuelve encapsulados en un Tpoint:
function Point(AX, AY: Integer): TPoint;
Lo mismo sucede con los rectángulos: podemos definirlos con cuatro coordenadas, las de la esquina superior
izquierda y las de la esquina inferior derecha. Existe también una estructura, llamada eneste caso Trect.
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
Se trata de un registro variante. Según como se lo pidamos, nos entregará su contenido en cuatro números
enteros o en dos registros Tpoint. Algo así como la dualidad onda-partícula de la mecánica cuántica, o los
discursos de los políticos.
Supongamos que...
Regístrate para leer el documento completo.