Ejercicio de SYSGUI #5: Dibujando e Imprimiendo
Lo que en esta sección se ve, realmente solo
puede interesar a quienes desean aprender a realizar trazos lineales en un contexto
gráfico.
Cada ventana de SYSGUI es no solamente un
tenedor potencial de controles sino también una superficie para dibujado y trazado.
¡CUIDADO! Los controles y dibujado tienen completamente
diferentes coordenadas en el sistema. Es de gran ayuda imaginarse que la coordenada
del sistema CONTROL está incrustada encima de la coordenada DRAWING del sistema.
Cuando los controles están situados en una ventana de SYSGUI, son situados siempre
encima de cualquier dibujo hecho (¡hasta agrupan ítem’s dibujados en cajas obscurecidas!).
No es posible dibujar sobre un control. Las unidades también son diferentes
lo cual puede causar que el alineamiento sea a veces engañoso.
¡SUGERENCIA! Si usted deseara dibujar en una ventana que
utiliza semicaracteres y contiene controles, y tienen el alineamiento de dibujo
predicho con los controles, coloca un control invisible (una caja de grupo funciona
agradablemente) en la ventana donde usted quiera dibujar. Aún cuando el control
esté invisible, la función CTRL 0 reportará su ubicación. Cambie las unidades
de control actuales a 'PIXELS' lo suficientemente largos como para contener
el rectángulo unificador para el control invisible. Entonces usted tendrá coordenadas
en pixeles para colocar su dibujo. VISUAL PRO/5 se despacha con programas de
demostración que utilizan esta técnica.
Vamos a comenzar dibujando un círculo en una ventana que
puede ser variada de tamaño, entonces encojamos la ventana y utilicemos Barras
de Desplazamiento para ver parte del círculo a la vez. Teclee inmediatamente
las siguientes líneas.
0010 REM "Hacer un dibujo
0020 OPEN(1)"X0"
0030 PRINT (1)'WINDOW'(100,100,200,200,"Dibujando",$0D$)
0040 PRINT (1)'ARC'(100,100,30)
No es necesario cambiar a semicaracteres
porque no estamos ploteando algunos controles. El flag $0D$ para la creación
de la ventana requiere una barra de desplazamiento vertical, una barra de desplazamiento
horizontal, y una ventana que permita ser cambiada de tamaño.
¡CUIDADO! Ahora mismo usted va a notar que se ven las
barras de desplazamiento. Esto es normal. La razón es que las barras de desplazamiento
son solamente agregadas a una ventana si (1) lo indicamos en el flag, y (2)
si parte del área de dibujo no está actualmente visible. Inicialmente todo el
área de dibujo es visible.
El mnemónico 'ARC' en SYSGUI trabaja exactamente como el conocido
mnemónico 'ARC' usado con los dispositivos tradicionales de ploteo del BBx.
Igualmente a como es utilizado desde antes, este dibuja un círculo con un radio
de 30 pixeles, y el centro posicionado en el pixel 100,100.
¡NOTA! El origen para dibujar es normalmente en la esquina superior
izquierda de la ventana, y las unidades son normalmente pixeles. El origen y
escala pueden ser alterados con el mnemónico 'WORD', y las unidades pueden ser
cambiadas (aunque nunca a semicaracteres) con 'DRAWUNITS'.
Trate de cambiar el tamaño a la ventana. Usted notará que aún
no puede ver alguna barra de desplazamiento. En lugar de eso, la imagen dibujada
es adaptada al tamaño y escala de la ventana. Para mantener la imagen el mismo
tamaño que la ventana cambiada de tamaño, utilice el mnemónico 'TRACK', a como
sigue.
0050 PRINT (1)'TRACK'(0)
Eso impedirá que la superficie de dibujo
sea re-escaleada junto con la ventana. Ahora usted debería poder reducir la
ventana y de poner en operación las Barras de Desplazamiento.
0060 PRINT (1)'PLOTTEXT'(150,100,"Comentario"); REM
"Sirve 0060:para agregar texto a los dibujos
Trate de vaciar el dibujo a una impresora,
si tuviera una disponible. Estos comandos deberán permitirle esa acción, ya
que ocasionan el despliegue del diálogo de impresión del Windows.
PRINT (1)'PSETUP','PWINDOW'
El mnemónico 'PSETUP' nos trae el diálogo de impresión, de modo
que usted puede seleccionar una impresora. Esto solamente es necesario si usted
no deseara aceptar las omisiones del sistema, como están configuradas en el
panel de control. 'PWINDOW' descarga los contenidos de la ventana actual a la
impresora como job de impresión de una página. (Jobs de impresión de multiples-páginas
son posibles con 'PBEGIN' y 'PEND').
¡NOTA! Los controles nunca son impresos por 'PWINDOW'... solamente
el contenido de una superficie de dibujo de la ventana es transferido.
Ver ejemplo de 'SETUP' y 'PWINDOW' al final
de esta sección.
|