You are on page 1of 32

Visual Basic - Guía del Estudiante Cap.

METODOS GRAFICOS
MANEJO DE LA IMPRESORA. El objeto PRINTER

Los métodos gráficos se aplican sobre aquellos objetos que permiten dibujar o escribir sobre
ellos. No son muchos estos objetos. Son el Formulario, el Picture Box y el Printer.

Se denominan métodos gráficas a aquellos métodos que nos permiten dibujar o representar
gráficos ya existentes en un objeto, o que nos permiten analizarlos o borrarlos. Los métodos
gráficos de que dispone Visual Basic son :

Circle, Cls, Line, PaintPicture, Point, Print, y PSet.

METODO Line

Dibuja líneas y rectángulos en un objeto. El objeto puede ser un Formulario, un control


PictureBox o el objeto Printer.

Sintaxis 1 objeto.Line (x1, y1) - (x2, y2), color, BF

(Con esta sintaxis trazará una línea desde las coordenadas absolutas x1,y1
(origen) a las coordenadas también absolutas x2,y2. El color de la línea será el
especificado en color. Los parámetros BF se explican mas adelante.

Sintaxis 2 objeto.Line (x1,y1) - Step (x2,y2), color, BF

(Con esta sintaxis trazará una línea desde las coordenadas absolutas x1,y1
hasta las coordenadas relativas a (x1,y1), x2,y2. Es decir, al poner la palabra
Step (paso) antes de las coordenadas finales, le estamos indicando que las
coordenadas que siguen a Step son relativas. Relativas ¿respecto a quien?.
Relativas a las coordenadas de comienzo de la línea. Esta última expresión
haría lo mismo que la siguiente expresión :

objeto.Line (x1,y1) - (x1+x2, y1+y2), color, BF

Podemos darnos cuenta por la descripción anterior que la palabra Step (palabra reservada de
Visual Basic) indica que las coordenadas que le siguen son relativas a algo. Veamos la tercera
forma de colocar una línea :

Sintaxis 3 objeto.Line Step (x1,y1) - Step (x2,y2), color, BF

Con esta expresión trazará una línea entre las coordenadas relativas (x1, y1),
y las coordenadas relativas (x2,y2). En principio es fácil entender que (x2,y2)
son relativas al punto (x1,y1), pero ¿Respecto a quién son relativas las
coordenadas (x1,y1) ? Son relativas a la posición del puntero de dibujo en el
instante anterior a ejecutar esta sentencia, es decir al CurrentX, CurrentY que
existiese antes de ejecutar la sentencia.

En estas expresiones, las coordenadas estarán especificadas en las unidades de medida


determinadas por las propiedades ScaleMode o ScaleWidth / ScaleHeight del objeto.

En las expresiones anteriores objeto es el nombre del Formulario, PictureBox u objeto


Printer sobre el que queremos dibujar. Si no se especifica objeto se entiende por defecto que
el objeto sobre el que queremos dibujar es el formulario que tiene el enfoque en ese momento.

Color es el número de color, que se puede poner en cualquiera de las posibles formas que
permite VB. Si no se especifica color, pondrá el color por defecto, que es el valor de la
propiedad ForeColor del objeto.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 1


BF es un parámetro opcional. En realidad este parámetro sirve para que en vez de hacer una
línea haga un rectángulo. La expresión :

Form1.Line (x1,y1) - (x2,y2) , RGB(255,0,0), B

dibuja un rectángulo entre los puntos (x1,y1) y (x2,y2).


La expresión :

Picture1.Line (x1,y1) - (x2,y2), RGB (0,255,0), BF

dibuja un rectángulo relleno del mismo color de la línea (en este caso verde) con esquinas en
las coordenadas (x1,y1) y (x2,y2)

De lo explicado se deduce que si el parámetro opcional BF es solamente B dibuja un cuadrado


con esquinas en las coordenadas indicadas (pueden ser absolutas o relativas), y si es BF pinta
ese rectángulo y además lo rellena con el mismo color elegido en el parámetro color. No
puede usarse solamente la F pues no tiene sentido “rellenar” de color una figura abierta.

Para dibujar líneas unidas, comience la línea siguiente en el punto final de la línea anterior.

La anchura de la línea dibujadas depende de la configuración de la propiedad DrawWidth.

Cuando se ejecuta Line, las propiedades CurrentX y CurrentY toman el valor del punto final de
la línea.

METODO Circle

Dibuja una circunferencia, círculo, elipse o arco sobre un objeto.

Sintaxis objeto.Circle (x, y), Radio, Color, Inicio, Final, Aspecto

En la expresión anterior, objeto es el objeto donde se dibujará el circulo. Puede ser, como en
el caso de la línea, un Formulario, un PictureBox o el objeto Printer. Si se omite, se asume
que se refiere al Formulario que tenga el enfoque en ese momento.

(x, y) son las coordenadas del punto central del círculo, elipse o arco. Las unidades de
medida vendrán determinadas por las propiedades ScaleMode o ScaleWidth / ScaleHeight del
objeto.

Radio Este parámetro es requerido. Indica el radio del círculo, elipse o arco, en el mismo
sistema de unidades de medida.

Color Este parámetro es opcional. Es el número del color, expresado en cualquiera de las
formas aceptadas por Visual Basic. Si se omite, se utiliza el valor de la propiedad ForeColor.

Inicio, Final Valor opcional. Cuando se dibuja un arco o parte de un círculo o elipse, inicio y
fin especifican (en radianes) la posición inicial y final del arco. El rango de ambas es de - 2 pi
radianes a 2 pi radianes. El valor predeterminado de inicio es 0 radianes; el de final es de 2 pi
radianes.

Nota para los que no aprobaron Matemáticas


Un circulo completo tiene 2 x pi radianes. Es decir, 2 x 3,1416 radianes equivalen a 360 º.
Como los datos de ángulos hay que introducirlos en radianes y nosotros normalmente
pensamos en grados, emplee esta fórmula para convertir grados a radianes :

Radianes = Grados x 2 x 3,1416 / 360

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 2


Aspecto Este valor nos convertirá la circunferencia en una elipse. Recuerde que una elipse
es una circunferencia generalizada. Lógicamente, este parámetro es opcional. El valor
predeterminado es 1.0, lo que crea un círculo perfecto (no elíptico) en la pantalla. Si utilizamos
en esta propiedad el valor 2 obtendremos una elipse con el radio horizontal de doble valor que
el vertical. Si empleamos 0.5 obtendremos otra elipse, con el radio vertical doble respecto al
horizontal.

Para rellenar la circunferencia y conseguir un círculo, establezca las propiedades FillColor y


FillStyle del objeto en el que se dibuja el círculo o elipse. Sólo se puede rellenar una figura
cerrada. La figuras cerradas son círculo, elipses o porciones de tipo circular (arcos con líneas
de radio dibujadas en ambos lados).

Los valores de Inicio y Final son siempre positivos. El sentido de cuenta de los ángulos es en
sentido contrario a las agujas del reloj. Si le añadimos a Inicio o a Final un signo menos
delante, lo que hace es dibujar un radio desde el centro del circulo hasta el inicio de la
circunferencia (si le hemos puesto un - a Inicio) o hasta el final del arco (si le hemos puesto
un - a Final). Se le pueden poner a ambos y cerramos la figura. Es decir, si queremos que
además de hacer el arco, dibuje los radios, pondremos el signo menos ( -) delante de Inicio y
de Final, a sabiendas que VB siempre entenderá los valores de Inicio y Final como positivos.
NOTA. No se líe con la información que aporta VB para este tema. ¡¡¡Está mal !!!

Lo expuesto anteriormente NO FUNCIONA para valores de Inicio o Final iguales a 0. Por lo


tanto, si queremos hacer un radio en 0 radianes (línea recta desde el centro a la derecha)
deberemos poner una cantidad muy cercana a 0 (0.00000001, p. e.) para que ponga el radio.

Puede omitir un argumento opcional en medio de la sintaxis, pero debe incluir la coma del
argumento antes de poner el argumento siguiente. Si omite un argumento adicional del final,
no utilice comas tras el último argumento que especifique.

Cuando se ejecuta Circle, las propiedades CurrentX y CurrentY toman el valor del punto
central.

METODO Cls

Borra los gráficos y el texto generados en tiempo de ejecución de los controles Form, Image o
PictureBox. Observe que el objeto Printer no tiene método Cls.

Sintaxis objeto.Cls

Donde objeto representa un formulario, control Image o PictureBox. Si objeto se omite, se


asume que el objeto es el control Form que tenga el enfoque.

Cls borra el texto y los gráficos generados en tiempo de ejecución por instrucciones gráficas y
de presentación. Los mapas de bits de fondo definidos usando la propiedad Picture y los
controles dispuestos en un Form en tiempo de diseño no se ven afectados por Cls. Los
gráficos y el texto colocados en controles Form, Image o PictureBox mientras la propiedad
AutoRedraw es True no se ven afectados si AutoRedraw se establece a False antes de llamar
a Cls. Es decir, el texto y los gráficos de los controles Form, Image o PictureBox pueden
mantenerse manipulando la propiedad AutoRedraw del objeto con el que se trabaja.

Después de llamar a Cls, las propiedades CurrentX y CurrentY del objeto se restablecen a 0.
METODO PaintPicture

Presenta el contenido de un archivo gráfico (.BMP, .WMF, .EMF, .ICO o .DIB) en un objeto
Form, PictureBox o Printer. La imagen deberá estar en un Formulario o en un control Image.
NO puede usarse este método para dibujar una imagen contenida en un fichero (Vea mas
adelante la función LoadPicture)

Puede sacar mucho partido a la propiedad PaintPicture. Piense solamente que puede volcar
una imagen .BMP al objeto Printer (a la impresora). Esto puede permitirle dibujar un logotipo
en un listado, factura, etc.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 3


Sintaxis

objeto.PaintPicture Imagen, x1, y1, anchura1, altura1, x2, y2, anchura2, altura2, Opecod

La sintaxis del método PaintPicture tiene las siguientes partes:

objeto es el objeto donde queremos colocar el gráfico. Es opcional. Si se omite, se asume que
el objeto es el formulario que tenga el enfoque.

Imagen Este parámetro es requerido. Es el origen del gráfico que se va a presentar en el


objeto. Debe ser la propiedad Picture de un objeto Form, control PictureBox o control Image.
También puede ser el contenido de una variable tipo Picture. Es decir, la imagen debe existir
en un PictureBox, en un Formulario, en un control Image o en una variable. Si es un control, el
que contiene la imagen, puede ponerse invisible (Su propiedad Visible = False) con lo que
podemos hacer un “almacenillo” de imágenes en un formulario sin que molesten a la hora de
trabajar

x1, y1 Parámetro requerido. Indican las coordenadas destino (eje x y eje y) del objeto en las
que se ponemos el origen de la imagen. Las propiedad ScaleMode, o ScaleWidth y
ScaleHeight del objeto determinan las unidades de medida que se usan. Recuerde que las
coordenadas en VB crecen desde la esquina superior izquierda. Los valores x1 e y1
determinan el punto del objeto donde se colocará la esquina superior izquierda del gráfico que
vamos a introducir.

anchura1 Opcional. Indica la anchura destino de la imagen. La propiedad ScaleMode del


objeto determina las unidades de medida que se usan. Si anchura destino es mayor o menor
que la anchura origen (anchura2), imagen se amplía o se comprime respecto al original. Si se
omite, se usa la anchura origen.

altura1 Opcional. Indica la altura destino de la imagen. La propiedad ScaleMode del objeto
determina las unidades de medida que se usan. Si altura destino es mayor o menor que la
altura origen (altura2), imagen se amplía o se comprime respecto al original. Si se omite, se
usa la altura origen.

x2, y2 Parámetro opcional. Indican las coordenadas (eje x y eje y) de la zona de recorte
dentro de la imagen origen. Esto de la zona de recorte significa que podemos cortarle a la
imagen origen un trozo, tanto en sentido vertical como en horizontal.

anchura2 Opcional. Indica la anchura de la imagen origen. Este parámetro se usa para
establecer la relación entre la anchura de la imagen final y la anchura de la imagen origen.

Si al realizar la copia de la imagen a Objeto, esta nos sale muy grande, podemos, bien rebajar
el parámetro anchura1 o aumentar anchura2, puesto que la medida real del ancho de la
imagen final estará en relación directa con el cociente anchura1/anchura2

altura2 Opcional. Lo mismo que para anchura2, pero referido a la altura en este caso.

Opecod Opcional. Valor Long o código que se usa sólo con mapas de bits. Define una
operación bit a bit (por ejemplo, operador Not o Xor) que se realiza sobre imagen al dibujarla
sobre objeto. Para obtener la lista completa de los operadores bit a bit, busque el tema BitBlt
en el archivo de Ayuda de Windows SDK (WIN31WH.HLP).

NOTA Como caso práctico, el autor de este texto suele guardar la imagen en una variable tipo
Picture. Se desconoce el ancho de esa imagen, que vendrá dado por la anchura real del
Bitmap. Puede conocerse la anchura y altura de la imagen consultando la anchura y altura de
la variable :

AnchodelaImagen = VariableImagen.Width
AlturadelaImagen = VariableImagen.Height

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 4


Muchas veces, la imagen que se introduce en la variable tipo Picture es distinta en una
ocasión u otras, por lo que desconocemos a priori que dato debemos poner a anchura1 y a
anchura2. Todo tiene solución. Con el código siguiente el ancho y alto de la imagen se
mantendrá constante independientemente de la anchura y altura que tenga el Bitmap original.

objeto.PaintPicture Imagen, x1, y1, anchura1, altura1, , , VariableImagen.Width, _


VariableImagen.Height

donde hemos omitido x2, y2 de forma intencionada, pero observe que hemos seguido
respetando su sitio con las comas como separadores. El último parámetro, Opecod se ha
omitido, pero como es el último, no hace falta dejarle las comas.

Pueden omitirse tantos argumentos finales como se desee. Si se omite uno o varios
argumentos finales, no se usan comas a partir del último argumento especificado. Si se quiere
especificar un argumento opcional, se deben especificar todos los argumentos opcionales que
aparecen antes en la sintaxis.

METODO Point

Devuelve, como entero Long, el color rojo - verde - azul (RGB) del punto especificado de un
objeto Form o control PictureBox.

Sintaxis objeto.Point(x, y)

donde
objeto Opcional. Nombre del Formulario o PictureBox donde se va a analizar el color. Si
objeto se omite se asume que el objeto es el formulario que tenga el enfoque.

x, y Parámetro requerido. Valores Single que indican las coordenadas horizontal (eje x) y
vertical (eje y) del punto según la propiedad ScaleMode del objeto Form o control PictureBox.
Deben colocarse entre paréntesis.
Estas coordenadas se refieren a las coordenadas del objeto que contiene el gráfico, con origen
(0,0) en la esquina superior izquierda del mismo.

Si el punto definido por las coordenadas x e y está fuera de objeto, el método Point devuelve
el valor -1.

METODO Pset

Asigna a un punto de un objeto un color especificado. El objeto puede ser un Formulario, un


PictureBox o el objeto Printer.

Sintaxis objeto.PSet (x, y), Color

ó objeto.PSet Step (x, y), Color

La sintaxis del método PSet tiene las partes siguientes:

objeto Opcional. Nombre del objeto (Formulario, PictureBox o Printer). Si se omite objeto, se
asume como objeto el Formulario que tenga el enfoque.

(x, y) Requeridos. Valores de simple precisión que indican las coordenadas horizontales (eje
x) y verticales (eje y) del punto a establecer.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 5


Estas coordenadas se refieren a las coordenadas del objeto destino, con origen (0,0) en su
esquina superior izquierda.

Color Parámetro opcional. Valor entero largo que indica el color RGB especificado para el
punto. Si se omite, se utiliza el valor de la propiedad ForeColor. Puede utilizar la función RGB
o la función QBColor para especificar el color.

El tamaño del punto dibujado depende del valor de la propiedad DrawWidth. Cuando
DrawWidth es 1, PSet establece un píxel al color especificado. Cuando DrawWidth es mayor
que 1, se centra el punto en las coordenadas especificadas.

La forma en que se dibuja el punto depende de los valores de las propiedades DrawMode y
DrawStyle.

Cuando se ejecuta PSet, las propiedades CurrentX y CurrentY toman el valor del punto
especificado en los argumentos.

Vacíe un píxel con el método PSet especificando las coordenadas del píxel y utilizando el
valor de la propiedad BackColor como argumento color.

Como complemento a los Métodos gráficos, bueno será comentar las formas posibles de
introducir colores en VB y otras propiedades que tienen relación con los métodos gráficos.

METODO Print

Imprime texto sobre un Formulario, Picture Box u Objeto Printer

Sintaxis Objeto.Print Expresión

Donde

Objeto es el nombre del Formulario, PictureBox o el Printer, donde se desea escribir


Expresión Es una cadena de caracteres o variable que contiene el texto a escribir

El tamaño, tipo, color y otras propiedades de la letra serán las que tenga el objeto sobre el que
se va a escribir en ese momento. El lugar donde se inicia la escritura será el de la propiedad
CurrentX y CurrentY actuales.

Veamos un ejemplo para excribir sobre un formulario. El Formulario, desde el código que está
dentro de el se le nombra con Me.

Me.FontName = "Arial"
Me.FontSize = 12
Me.FontBold = True
Me.Print "Hola Mundo"

SavePicture (Instrucción)

Guarda un gráfico de un objeto Form, de un control PictureBox o de un control Image en un


archivo.

Sintaxis SavePicture imagen, expcadena

La sintaxis de la instrucción SavePicture tiene las siguientes partes:

imagen es el nombre del objeto que contiene los gráficos que se van a guardar en el archivo,

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 6


mas su propiedad Picture o Image y expcadena es el nombre del archivo gráfico que se va a
guardar.

Ejemplo: SavePicture Picture1.Picture, "c:\suarez\luis.bmp"

En este ejemplo, guardamos en el fichero LUIS.BPM que está en el directorio C:\SUAREZ el


gráfico que contiene el PictureBox denominado Picture1

Si un gráfico ha sido cargado en la propiedad Picture desde un archivo, en tiempo de diseño o


en tiempo de ejecución, se guarda usando el mismo formato del archivo original. Los gráficos
de la propiedad Image siempre se guardan como archivos de mapas de bits (.BMP).

LoadPicture (Función)

Carga un gráfico en un objeto Form, un control PictureBox o un control Image.

Sintaxis Objeto.LoadPicture ([expcadena])

Donde Objeto es el nombre del Formulario, PictureBox o control Image que se va a rellenar
con el gráfico, y el argumento expcadena es el nombre del archivo gráfico que se quiere
cargar.

Usando LoadPicture sin argumento se borran los gráficos de los formularios y los controles
PictureBox e imagen.

Los formatos gráficos reconocidos por Visual Basic incluyen archivos de mapas de bits (.BMP),
archivos de icono (.ICO), archivos de longitud codificada (.RLE) y Metarchivo (.WMF).

Para cargar gráficos para presentarlos en un control PictureBox, Image o como fondo de un
formulario, el valor devuelto por LoadPicture debe ser asignado a la propiedad Picture del
objeto en el se quiere presentar la imagen. Por ejemplo:

Form1.Picture = LoadPicture ("FIESTA.BMP")


Imagen1.Picture = LoadPicture ("FIESTA.BMP")
Picture1.Picture = LoadPicture (FIESTA.BMP")

Para asignar un icono a un formulario, se asigna el valor devuelto por la función LoadPicture a
la propiedad Icon del objeto Form:

Form1.Icon = LoadPicture ("UNICONO.ICO")

Los iconos también pueden ser asignados a las propiedades DragIcon de todos los controles
excepto los controles Timer y Menú. Por ejemplo:

Comando1.DragIcon = LoadPicture ("UNICONO.ICO")

Para cargar gráficos en el Portapapeles del sistema se usa LoadPicture de la forma siguiente:

Clipboard.SetData LoadPicture ("FIESTA.BMP") (Vea Capítulo del Portapapeles)

Puede también meter una imagen en una variable, y luego poner en uno de los controles
citados anteriormente la imagen guardada en la variable. Este método le permite presentar
una imagen muy rápidamente, ya que no necesita acceder al disco para buscar una imagen,
pero emplea mucha memoria RAM, ya que la variable (o variables) conteniendo la(s)
imágenes están en la RAM.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 7


Para ello hay que declarar las variables como Picture

Option Explicit
Dim MiVariable1 As Picture, MiVariable2 As Picture

Private Sub Form_Load()


Set MiVariable1 = LoadPicture("c:\pruebavb\ athena.bmp ")
Set MiVariable2 = LoadPicture("c:\list_tel\rr1.bmp")
End Sub

Private Sub Command1_Click()


Picture1.Picture = MiVariable1
End Sub

Private Sub Command2_Click()


Picture1.Picture = MiVariable2
End Sub

Mediante este programa lo que hemos hecho fue guardar dos imágenes en sendas variables,
en el momento de cargar el formulario, imágenes que se pasan posteriormente al control
Picture1 con los botones de comando Command1 y Command2

Propiedades de varios controles aplicables a los métodos gráficos

DrawMode (Propiedad)

Devuelve o establece un valor que determina el aspecto de la salida de un método gráfico o el


aspecto de un control Shape o Line.

Sintaxis objeto.DrawMode = número

Donde objeto es el nombre del Formulario, PictureBox, objeto Print, o los controles Shape o
Line, y número es un entero que especifica el aspecto, según la siguiente lista:

1 Blackness.
2 Not Merge PenInverso del valor 15 (Merge Pen).
3 Mask Not PenCombinación de los colores comunes del color de fondo y el inverso del
Pen.
4 Not Copy PenInverso del valor 13 (Copy Pen).
5 Mask Pen NotCombinación de los colores comunes al Pen y al inverso de la muestra.
6 InvertInverso del color de muestra.
7 Xor PenCombinación de los colores en el Pen y en el color de la muestra, pero no de
ambos.
8 Not Mask PenInverso del valor 9 (Mask Pen).
9 Mask PenCombinación de los colores comunes al Pen y a la presentación.
10 Not Xor PenInverso del valor 7 (Xor Pen).
11 NopNadano hay cambios. De hecho, este valor desactiva el dibujado.
12 Merge Not PenCombinación del color de muestra y el inverso del color del Pen.
13 Copy Pen (Predeterminado)Color especificado por la propiedad ForeColor.
14 Merge Pen NotCombinación del color del Pen y el inverso del color de muestra.
15 Merge PenCombinación del color del Pen y el color de muestra.
16 Whiteness.

Use esta propiedad para producir efectos visuales con controles Shape o Line o al dibujar con
métodos gráficos. Visual Basic compara cada píxel de la plantilla de dibujo con el píxel
correspondiente del fondo existente y después aplica operaciones a nivel de bit. Por ejemplo,
el valor 7 (Xor Pen) usa el operador Xor para combinar un píxel del dibujo con un píxel del
fondo.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 8


El efecto exacto de un valor DrawMode depende del modo en el que el color de una línea
dibujada en tiempo de ejecución se combina con los colores de la pantalla. Los valores 1, 6, 7,
11, 13 y 16 producen los mejores resultados.

DrawStyle (Propiedad)

Devuelve o establece un valor que determina el estilo de línea de la salida de métodos


gráficos.

Sintaxis objeto.DrawStyle = número

Donde objeto es el nombre del Formulario, PictureBox, objeto Print sobre el que se va a
dibujar, y número es un entero que especifica el estilo de línea, tal como se describe a
continuación:

0 (Predeterminado) Continuo.
1 Rayas.
2 Puntos.
3 Raya - punto.
4 Raya - punto - punto.
5 Transparente.
6 Continuo interior.

Si DrawWidth se define con un valor mayor que 1, los valores de DrawStyle entre 1 y 4
producen una línea continua (el valor de la propiedad DrawStyle no cambia). Si DrawWidth se
define como 1, DrawStyle produce el efecto para cada valor descrito en la tabla anterior.

DrawWidth (Propiedad)

Devuelve o establece la anchura de línea de lo dibujado con los métodos gráficos.

Sintaxis objeto.DrawWidth = tamaño

Donde objeto es el nombre del Formulario, PictureBox, objeto Printer sobre el que se va a
dibujar, y tamaño es una expresión numérica comprendida entre 1 y 32.767 que representa la
anchura de la línea en pixeles. El valor predeterminado es 1, es decir, un píxel de ancho.

Puede incrementar el valor de esta propiedad para aumentar la anchura de la línea. Si el valor
de la propiedad DrawWidth es mayor que 1, los valores de 1 a 4 en la propiedad DrawStyle
producirán una línea continua (el valor de DrawStyle no se modifica). Si se establece 1 en
DrawWidth, DrawStyle producirá los resultados mostrados en la tabla de esta propiedad.

FillColor (Propiedad)

Devuelve o establece el color usado para rellenar formas. FillColor también se usa para
rellenar círculos y cuadros creados con los métodos gráficos Circle y Line.

Sintaxis objeto.FillColor = valor

Donde objeto es el nombre del Formulario, PictureBox, objeto Printer sobre el que se va a
dibujar, y valor es un valor o constante que determina el color de relleno, con cualquiera de
los criterios de VB para definir el color.
De forma predeterminada, FillColor está definido como 0 (Negro).

Excepto en el objeto Form, cuando la propiedad FillStyle se define con su valor


predeterminado, 1 (Transparente), el valor de FillColor se ignora.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 9


FillStyle (Propiedad)

Devuelve o establece el modelo usado para rellenar controles Shape así como los círculos y
los cuadros creados con los métodos gráficos Circle y Line.

Sintaxis objeto.FillStyle = número

Donde objeto es el nombre del Formulario, PictureBox, objeto Printer sobre el que se va a
dibujar, y número es un entero que especifica el estilo de relleno, tal como se describe a
continuación:

0 Continuo.
1 (Predeterminado) Transparente.
2 Línea horizontal.
3 Línea vertical.
4 Diagonal hacia arriba.
5 Diagonal hacia abajo.
6 Cruzado.
7 Diagonal Cruzada.

Cuando la propiedad FillStyle se define con su valor predeterminado, 1 (Transparente), el valor


de FillColor se ignora, excepto en el objeto Form.

AutoRedraw (Propiedad)

Esta propiedad es aplicable a los formularios y el PictureBox. Si está a true, hace que el
Formulario o Picture guarden el gráfico aunque estén minimizados o pase por encima de ellos
otro objeto. Por regla general, esta propiedad debe ponerse a False cuando no se van a utilizar
métodos gráficos sobre ese objeto (se ahorra memoria) y a True cuando se van a utilizar
métodos gráficos

Sintaxis objeto.AutoRedraw = booleano

Donde objeto es el nombre del Formulario o PictureBox sobre el que se va a dibujar, y


booleano es una expresión booleana que especifica la forma en la que objeto es vuelto a
dibujar, tal como se describe a continuación:

True Activa el redibujado automático de un objeto Form o control PictureBox. Los gráficos
y el texto se escriben en la pantalla y en una imagen almacenada en memoria. El objeto no
recibe eventos Paint; se vuelve a dibujar cuando es necesario, usando la imagen almacenada
en memoria.

False (Predeterminado) Desactiva el redibujado automático de un objeto y escribe los


gráficos y el texto solamente en la pantalla. Visual Basic invoca el evento Paint del objeto
cuando se necesita volver a dibujar dicho objeto.

Esta propiedad es importante cuando se trabaja con los siguientes métodos gráficos: Circle,
Cls, Line, Point, Print y PSet. Al establecer AutoRedraw a True la salida de estos métodos se
vuelve a dibujar automáticamente en un objeto Form o en un control PictureBox cuando, por
ejemplo, se cambia de tamaño al objeto o se vuelve a presentar después de haber estado
oculto por otro objeto.
Se puede establecer AutoRedraw en el código en tiempo de ejecución para alternar entre
dibujar gráficos persistentes (como color de fondo o cuadrícula) y gráficos temporales. Si se
define AutoRedraw a False, la salida anterior se convierte en parte del fondo de la pantalla.
Cuando AutoRedraw se define a False, los gráficos de fondo no se eliminan si se borra el área

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 10


de dibujo con el método Cls. Al volver a establecer AutoRedraw a True y después usar Cls se
borran los gráficos de fondo.

MEDIDAS DE LOS OBJETOS QUE PERMITEN METODOS GRAFICOS

Cuando mencionamos la sintaxis de los métodos gráficos todos ellos hablan de medidas. Por
ejemplo, en el método Line:

objeto.Line Step (x1,y1) - Step (x2,y2), color, BF

los valores x1, y1, x2, y2 se refieren a valores de las coordenadas x e y del objeto donde se
va a ejecutar ese método gráfico.

La pregunta viene ahora. En que unidades de medida se miden esas coordenadas? La


respuesta en principio es sencilla: en lo establecido en la propiedad ScaleMode. Asi, podemos
trazar una línea midiéndola en Twips, en Points, Pixels, Carácter, y hasta podemos hacerlo en
mm, cm o pulgadas. Nadie es capaz de saber la medida que va a tener una línea medida en
Twips. Y encima, las medidas que va a tener de ese formulario donde va a poner pueden ser
número como 5715 x 8953.

Le sugiero una forma mucho mas práctica de poner las medidas a un objeto soporte de
métodos gráficos. Use las propiedades ScaleWidth y ScaleHeight para determinar cuanto
quiere que le mida de ancho y de alto respectivamente. No se preocupe de cuanto va a medir
ahora la unidad de medida. Si pone para un formulario o PictureBox rectangular que
ScaleWidth = 12000 y ScaleHeight = 8000 sabe que ese formulario o PictureBox mide esas
cantidades que ha puesto. Ahora ya será mucho mas fácil definir los valores de x1, y1 y x2 e
y2 en la línea de código anterior. Esta observación es especialmente útil cuando estamos
trabajando con el Printer. El Printer es la impresora. Y en este caso podrá poner unas medidas
que sean acordes con el tamaño del papel que esté usando (Por ejemplo 21000 para
ScaleWidth y 29700 para ScaleHeight si se trata de un papel de 210 x 297 mm (DIN A4) En
estas condiciones, la unidad de medida sería la centésima de mm, precisión suficiente para
realizar dibujos que necesiten alta definición (Circuitos impresos, por ejemplo). En el caso del
papel de la impresora, puede calcular los valores de las coordenadas X e Y usando un
escalímetro.

Propiedades CurrentX y CurrentY

Estas propiedades, aplicables a todos los objetos que aceptan métodos gráficos, definen el
punto de inicio para los siguientes métodos gráficos o de impresión. Es decir, donde se va a
comenzar a escribir mediante el método Print o el punto de inicio del método gráfico Line, si
no se especifica el origen del mismo. La instrucción

Me.Line -(2000, 2000)

Dibuja una línea desde el punto donde se encontrase en ese momento el CurrentX y CurrentY
hasta el punto 2000,2000

Colores en Visual Basic.


(Este texto es repetición del expuesto en el capitulo del CommonDialog)

Visual Basic acepta para especificar un color, tres procedimientos: Mediante el número de
color, mediante la sentencia RGB ( rojo, verde, azul ) o mediante la función QBColor.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 11


Por número

El número que representa el color en VB está formado por la suma de la componente roja, la
componente verde y la componente azul. Podríamos verlo muy bien en numeración
Hexadecimal:

Color = Hex XX YY ZZ

Donde ZZ es un número Hexadecimal que representa la cantidad del color rojo. El mínimo
estaría en 0 (H00) y el máximo en 255 (HFF)

YY representaría la cantidad de color verde y XX la de color azul, ambos con los mismos
límites explicados para el rojo.

Por ejemplo: el rojo puro sería: Hex(0000FF) = 255


el verde puro sería: Hex(00FF00) = 652280
el azul puro sería: Hex(FF0000) = 16711680

Una mezcla de un poco de rojo (HB1), otro poco de verde (H56) y otro poco de azul (H1F)
daría el siguiente número:

Hex(1F56B1) = 2053809

Por la sentencia RGB

Se puede expresar el color, poniendo simplemente RGB (rojo, verde, azul), donde rojo es un
número entre 0 y 255 que indica la cantidad de color rojo que se aporta al color, verde un
número comprendido entre 0 y 255 indicando la cantidad de verde, y lo mismo para azul.
Esta es la forma más sencilla de poner la propiedad color, y con la que mejor controlaremos el
mismo.

Mediante la Función QBColor

Devuelve o establece el código de color RGB correspondiente a un número de color.

Sintaxis Objeto.QBColor(color)

El argumento color es un número entero entre 0 a 15, según la siguiente lista:

Número Color Número Color

0 Negro 8 Gris
1 Azul 9 Azul claro
2 Verde 10 Verde claro
3 Aguamarina 11 Aguamarina claro
4 Rojo 12 Rojo claro
5 Fucsia 13 Fucsia claro
6 Amarillo 14 Amarillo claro
7 Blanco 15 Blanco brillante

Ejemplo. Tengamos un Label llamado Label1 y un botón de comando, en cuyo procedimiento


click le introducimos el código:

Static i As Integer
i=i+1

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 12


If i = 16 Then i = 0
Label1.caption = i
Label1.BackColor = QBColor(i)

En el Label podremos ver el color y su número de color.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 13


LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 14
La Impresora - El Objeto Printer
El objeto Printer le permite comunicarse con una impresora del sistema (inicialmente la
impresora predeterminada). Este es uno de los Objetos de VB que no tiene representación
gráfica en la pantalla, tanto en tiempo de diseño como de ejecución.

El objeto Printer gestiona el envío de información a la impresora, tanto para imprimir textos
como gráficos. Para Visual Basic el objeto Printer es como otro objeto cualquiera. Si
queremos imprimir algo en la impresora, debemos escribir el código VB necesario para
escribirlo en el objeto Printer, lo mismo que si estuviésemos escribiendo en un formulario.

Lo mismo que para escribir en un formulario, escribíamos el código

Form1.Print "ABCD"

Para escribir en el objeto Printer el código será:

Printer.Print “ABCD”

Para enviar gráficos al objeto Printer se procede de igual forma que si estuviésemos
dibujando en un formulario

Form1.Circle (200, 150), 50, , , , 0.5 Esta instrucción dibuja una elipse centrada en
el punto x=200, y=150 del formulario Form1

Printer.Circle (200, 150), 50, , , , 0.5 Esta instrucción dibuja una elipse centrada en
el punto x=200, y=150 del objeto Printer

Parece en principio algo raro hablar de las coordenadas x e y del objeto Printer. Posiblemente
porque el objeto Printer es un objeto que no podemos “ver”. Pero imaginemos que el objeto
Printer es una hoja de papel. La misma hoja que aparecerá escrita una vez que le enviemos el
texto (o los gráficos) que queremos imprimir. Esa hoja de papel tendrá unas dimensiones que
deberemos indicar al objeto Print. La forma de indicarle las dimensiones del papel varían
dependiendo del driver de impresora usado.

El driver de la impresora sabrá que el papel que tiene es un DIN A4, DIN A3, etc., que tiene
unas medidas prefijadas. Centrémonos en lo mas habitual, una impresora que tenga un papel
DIN A4 cuyas medidas son 210 x 297 mm.

El driver de impresora “sabe” que ese es el tamaño de su papel. Ahora solamente nos falta
que nuestra aplicación lo sepa también. Para ello vamos a indicarle mediante un par de
sentencias las medidas de ese papel : ScaleWidth y ScaleHeight

Si le decimos :

Printer.ScaleWidth = 2100 : Printer.ScaleHeight = 2970

le estamos diciendo a nuestro programa que el papel mide 2100 unidades de ancho y 2970
unidades de alto. (Estamos suponiendo que el papel está colocado en posición vertical). Si
tiene 2100 unidades de ancho, y el ancho real del papel es de 210 mm, nuestra unidad de
medida será de 0,1 mm. Es decir, le decimos a nuestro programa que el papel tiene 2100
décimas de milímetro de ancho, y 2970 décimas de milímetro de alto. La precisión con la que
podemos colocar un punto sobre el papel será por tanto 0,1 mm. Podríamos hacerla mayor
(0,01 mm.) si pusiésemos Printer.ScaleWidth = 21000 y Printer.ScaleHeight = 29700.

Para el trabajo ordinario de imprimir listados o dibujar gráficos tipo barras, es mas que
suficiente una precisión de 0,1 mm. Si lo que queremos es un dibujo mas exacto (Dibujar
fotolitos de circuitos impresos, p.e. ) esta precisión de 0,1 mm. no nos bastaría, debiendo llegar

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 15


a una precisión del orden de 0,01 mm. Pero todo ello está condicionado por el número de p.p.i.
(puntos por pulgada) que nuestra impresora es capaz de dar.

Nota.- Una impresora tiene unos márgenes sobre los que no puede escribir. Por lo tanto,
cuando decíamos que el papel tiene 210 mm. de ancho, en realidad ya estamos cometiendo un
pequeño error, ya que la impresora no puede escribir en todo el ancho, pues los 2 - 3 mm de
cada lado no lo imprime. Deberemos entonces poner las propiedades ScaleWidth y
ScaleHeight del Printer de acuerdo con la superficie real de escritura de nuestra impresora. Le
adelanto que no le va a ser fácil enterarse de qué márgenes deja sin imprimir. Le recomiendo
que imprima una línea desde Printer.CurrentX=0 a Printer.CurrentX= (un número superior a
Printer.Scalewidth). Mida con un escalímetro el ancho real de la impresión.

El objeto Printer almacenará toda la información sin pasarla a la impresora hasta que se le
envíe la instrucción Printer.EndDoc o se le envíe un salto de página mediante la instrucción
Printer.NewPage.

El objeto Printer, al igual que otros objetos de Visual Basic tiene sus propiedades y métodos.

Las principales propiedades del objeto Printer son :

Nota El efecto de las propiedades del objeto Printer depende del controlador suministrado por
el fabricante de la impresora. Algunos valores de la propiedad pueden no tener efecto, o varios
valores distintos de la propiedad pueden tener todos el mismo efecto. Los valores fuera del
rango aceptado pueden producir error. Para obtener más información, vea la documentación
del fabricante del controlador concreto.

ColorMode

Devuelve o establece un valor que determina si una impresora de color imprime en color o en
blanco y negro. No disponible en tiempo de diseño.

Sintaxis Printer.ColorMode [= valor]

Valor puede ser un número o una constante de VB.

Si es un 1 (o la constante vbPRCMMonochrome) imprimirá en blanco y negro (normalmente


en escala de grises).

Si es 2, o la constante vbPRCMColor imprimirá en color.

El valor predeterminado depende del controlador de la impresora y de la configuración actual


de la impresora. Las impresoras en blanco y negro ignoran esta propiedad.

Copies

Devuelve o establece un valor que determina el número de copias que se van a imprimir.

Sintaxis Printer.Copies = número

Donde número debe ser una expresión numérica que especifique el número de copias que se
van a imprimir. Este valor debe ser un entero. El valor por defecto es 1.

CurrentX CurrentY

Devuelven o establecen las coordenadas horizontal (CurrentX) o vertical (CurrentY) para un


método gráfico o de impresión. No disponible en tiempo de diseño.

Sintaxis

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 16


Para forzar las coordenadas del cursor de escritura del objeto Printer :

Printer.CurrentX = x Printer.CurrentY =y

Para conocer las coordenadas del cursor de escritura del objeto Printer

Posx = Printer.CurrentX Posy = Printer.CurrentY

Comentarios

Las coordenadas se miden a partir de la esquina superior izquierda del objeto. El valor de la
propiedad CurrentX es 0 en el borde izquierdo de un objeto, y el valor de la propiedad
CurrentY es 0 en el borde superior. Las coordenadas se expresan en las unidades de medida
definidas por las propiedades ScaleHeight y ScaleWidth. Si se han introducido estas
propiedades (como recomendábamos mas atrás), la propiedad ScaleMode se pone
automáticamente a User. Si no se establecen, ScaleMode puede estar en Twips, Point,
Pixeles, caracteres, .... unidades que supongo le serán mucho mas difícil de controlar que si
Vd. dice desde el principio que el papel de su impresora tiene unas medidas de 2100 por 2970
(Printer.ScaleWidth = 2100, Printer.ScaleHeight = 2970) Haciéndolo de esta última forma,
cuando queramos dibujar una línea entre dos puntos de nuestro papel DIN A4 bastará con
medir las coordenadas de inicio y final de línea, eso sí, usando como unidad de medida la
décima de milímetro. Por ejemplo, una línea a 5 mm del borde superior, que comience a 20
mm. Del borde izquierdo y termine a 10 mm del borde derecho, se dibujaría con la siguiente
instrucción :

Printer.Line (200,50) - (2870,50)

Si queremos escribir datos en una columna, que está a 30 mm. de la parte izquierda de la
hoja, comenzaremos a escribir cada fila de esa columna con un CurrentX de 300. Para ello
primero fijaremos el punto de inicio mediante CurrentX y a continuación usaremos el método
Print :

Printer.CurrentX = 300 : Printer.CurrentY = (lo que corresponda a esa fila)


Printer.Print MiVariable ‘ donde MiVariable contiene el dato a escribir

CurrentX y CurrentY se quedan con los valores establecidos por el último método gráfico o
método Print usado.

Cuando se está dibujando sobre el objeto Printer, los métodos gráficos Circle y Line
establecen los siguientes valores para CurrentX y CurrentY :

Circle El centro del objeto.


Line El punto final de una línea.

El método Print establece como CurrentX la coordenada correspondiente a la parte derecha


de la última letra impresa. Como CurrentY depende de si ha terminado la sentencia
Printer.Print MiVariable con punto y coma ( ;) o sin el. En el primer caso, CurrentY es el mismo
que tenía antes de realizar ese método. En el segundo caso, avanza automáticamente una
línea.

Cuando se envía la instrucción EndDoc establece los valores de estas propiedades a 0, 0.


NewPage establece igualmente los valores 0, 0.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 17


DeviceName

Devuelve el nombre del dispositivo permitido por un controlador. Esta propiedad es solo de
lectura

Sintaxis Printer.DeviceName

Cada controlador de impresora acepta uno o más dispositivos por ejemplo, HP LaserJet III es
un nombre de dispositivo.

DrawMode

Devuelve o establece un valor que determina el aspecto de la salida de un método gráfico.


Vea la Ayuda de VB para mayor detalle.

DrawStile

Devuelve o establece un valor que determina el estilo de línea de la salida de métodos


gráficos.

Sintaxis Printer.DrawStyle [= número]

El número especifica el estilo de línea :

0 (Predeterminado) Continuo.
1 Rayas.
2 Puntos.
3 Raya - punto.
4 Raya - punto - punto.
5 Transparente.
6 Continuo interior.

Observaciones

Si DrawWidth se define con un valor mayor que 1, los valores de DrawStyle entre 1 y 4
producen una línea continua (el valor de la propiedad DrawStyle no cambia). Si DrawWidth se
define como 1, DrawStyle produce el efecto para cada valor descrito en la tabla anterior.

DrawWidth

Devuelve o establece la anchura de línea de lo dibujado con los métodos gráficos.

Sintaxis Printer.DrawWidth [= tamaño]

tamaño es una expresión numérica comprendida entre 1 y 32.767 que representa la anchura
de la línea en pixeles. El valor predeterminado es 1, es decir, un píxel de ancho.

Comentarios

Puede incrementar el valor de esta propiedad para aumentar la anchura de la línea. Si el valor
de la propiedad DrawWidth es mayor que 1, los valores de 1 a 4 en la propiedad DrawStyle
producirán una línea continua (el valor de DrawStyle no se modifica). Si se establece 1 en
DrawWidth, DrawStyle producirá los resultados mostrados en la tabla de esta propiedad.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 18


DriverName

Devuelve el nombre del controlador de un objeto Printer. Esta propiedad es solo de lectura

Sintaxis Printer.DriverName

Cada controlador tiene un nombre único. Por ejemplo, el DriverName de varias impresoras
Hewlett-Packard es HPPCL5MS. El DriverName es normalmente el nombre de archivo del
controlador sin la extensión.

Duplex

Devuelve o establece un valor que determina si las páginas se imprimen por los dos lados (si
la impresora tiene esta característica). No disponible en tiempo de diseño.

Sintaxis Printer.Duplex [= valor]

Donde valor es un valor o constante que especifica el tipo de impresión, tal como se describe
a continuación

Constante Valor Descripción

bPRDPSimplex 1 Impresión en una sola cara con la orientación actual.


vbPRDPHorizontal 2 Impresión en dos caras con vuelta de página
horizontal.
vbPRDPVertical 3 Impresión en dos caras con vuelta de página vertical.

Con impresión a doble cara horizontal, la parte superior de ambas caras de la hoja están en el
mismo borde de la hoja. Con impresión a doble cara vertical, la parte inferior de una página
está en el mismo borde de la hoja que la parte superior de la página siguiente. Véase el gráfico
existente en la ayuda de VB para la propiedad Duplex

FillColor

Devuelve o establece el color usado para rellenar formas; FillColor también se usa para
rellenar círculos y cuadros creados con los métodos gráficos Circle y Line.

Sintaxis Printer.FillColor [ = valor]

Donde valor es un valor o constante que determina el color de relleno. El valor puede
introducirse como RGB o con las constantes QB color

ejemplos
FillColor = QBColor(8)
FillColor = RGB (255,0,0)
El color predeterminado es el 0 (Negro).

FillStyle

Devuelve o establece el modelo usado para rellenar dibujos (círculos y los cuadros creados
con los métodos gráficos Circle y Line.

Sintaxis printer.FillStyle [= número]

Donde número Un entero que especifica el estilo de relleno, tal como se describe a

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 19


continuación

Valor Descripción

0 Continuo.
1 (Predeterminado) Transparente.
2 Línea horizontal.
3 Línea vertical.
4 Diagonal hacia arriba.
5 Diagonal hacia abajo.
6 Cruzado.
7 Diagonal Cruzada.

Cuando la propiedad FillStyle se define con su valor predeterminado, 1 (Transparente), el


valor de FillColor se ignora.

Font

Devuelve o establece el objeto Font (letra) del objeto Printer. Este objeto Font tiene a su vez
sus propiedades (Name, Size, Bold, Italic ... )

Podemos forzar la fuente a usar por el objeto Printer con un CommonDialog, igualando la
propiedad Name del objeto Font del Printer a la propiedad FontName del CommonDialog

Printer.Font.Name = CD1.FontName

Podemos averiguar que fuente está usando el objeto Printer :

Tipofuente = Printer.Font.Name

FontCount

Devuelve el número de fuentes disponibles para el dispositivo de presentación actual o la


impresora activa. (Devuelve un número) Es solamente de lectura.

Sintaxis numerodefuentes = Printer.FontCount

FontName

Devuelve el nombre de la fuente que está usando el objeto Printer

Sintaxis nombredelafuente = Printer.Fontname

(El Objeto Printer admite esta propiedad como Font.Name o FontName indistintamente)

Fonts

Devuelve todos los nombres de fuente disponibles para el dispositivo de presentación actual o
la impresora activa.

Sintaxis Printer.Fonts(índice)

La propiedad Fonts funciona de forma conjunta con la propiedad FontCount, que devuelve el
número de nombres de fuente disponibles para el objeto. Las fuentes disponibles en Visual
Basic varían de acuerdo con la configuración del sistema, y los dispositivos de presentación y
de impresión. Use las propiedades Fonts y FontCount para obtener información sobre las
fuentes disponibles para pantalla o impresora.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 20


Por ejemplo, si queremos ver en Label1 todas las fuentes disponibles para el objeto Printer,
estableceremos el siguiente código :

For i = 1 To Printer.FontCount
Label1.Caption = Label1.Caption + " " + Printer.Fonts(i)
Next i

FontSize

Devuelve o establece el tamaño de la fuente a utilizar para el texto mostrado en un control o


en una operación de dibujo o impresión en tiempo de ejecución.

Sintaxis Printer.FontSize = puntos

Donde puntos es una expresión numérica que especifica el tamaño de fuente a utilizar, en
puntos.

Puede utilizar esta propiedad para dar al texto el tamaño que desee. El valor predeterminado
lo determina el sistema. Para cambiar este valor, especifique el nuevo tamaño de la fuente en
puntos.
El valor máximo de FontSize es 2160 puntos.

Nota Las fuentes disponibles en Visual Basic varían dependiendo de la configuración del
sistema y de los dispositivos de presentación e impresión. En las propiedades relacionadas
con las fuentes sólo pueden establecerse valores para los que exista una fuente.

(El objeto Printer acepta tanto Font.Size como FontSize)

FontBold, FontItalic, FontStrikethru y FontUnderline

Devuelve o establece los estilos de fuente en los siguientes formatos: Negrita, Cursiva,
Tachada y Subrayada.

Printer.FontBold [= lógico] ‘ p.e Printer.FontBold = True escribiría con


Printer.FontItalic [= lógico] ‘ letra negrita
Printer.FontStrikethru [= lógico]
Printer.FontUnderline [= lógico]

Para el objeto Printer, el establecimiento de estas propiedades no afecta al texto ya escrito,


solamente para lo que se escriba después de cambiar la propiedad. Aprovecha esta facilidad
para cambiar de letra a lo largo de un documento.

En general, deberá modificar la propiedad FontName antes de establecer los atributos de


tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y
FontUnderline. Sin embargo, cuando especifique un tamaño inferior a 8 puntos para una
fuente TrueType, primero deberá establecer el tamaño en puntos con la propiedad FontSize,
luego especificar la propiedad FontName y después establecer de nuevo el tamaño con
FontSize. El entorno operativo Microsoft Windows utiliza una fuente distinta para las fuentes
TrueType con un tamaño inferior a 8 puntos.

Printer acepta FontBold ó Font.Bold, FontItalic ó Font.Italic ....

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 21


FontTransparent

Devuelve o establece un valor Booleano que determina si el texto y los gráficos de fondo de
un objeto Printer, se muestran en el espacio situado entre los caracteres.

Sintaxis Printer.FontTransparent = True / False

La modificación de FontTransparent en tiempo de ejecución no afecta a los gráficos ni el


texto ya dibujados en un objeto Printer .

ForeColor

Devuelve o establece el color de escritura para impresoras en color. El cambio de color afecta
solamente al texto que se envíe después de realizar el cambio.

hDC

Devuelve un controlador proporcionado por el entorno operativo Microsoft Windows para el


contexto de dispositivo de un objeto.

Sintaxis Printer.hDC

Esta propiedad es un controlador de contexto de dispositivo del entorno operativo Windows. El


entorno operativo Windows se encarga de la presentación del sistema asignando un contexto
de dispositivo al objeto Printer. Se puede usar la propiedad hDC para referirse al controlador
del contexto de dispositivo de un objeto. Así se obtiene un valor que se pasa en las llamadas al
API de Windows.
Nota El valor de la propiedad hDC puede cambiar en tiempo de ejecución, así que no se
debe almacenar en una variable. En su lugar, use la propiedad hDC cada vez que lo necesite.

Height Width

Devuelven o establecen las dimensiones del objeto Printer. No están disponibles en tiempo de
diseño.

Sintaxis Printer.Height = número


Printer.Width = número

Donde número indica las dimensiones del papel configurado para el dispositivo de impresión.
No disponibles en tiempo de diseño. Si se establecen en tiempo de ejecución, los valores de
estas propiedades se utilizarán en lugar del de la propiedad PaperSize.

Para el objeto Printer, estas propiedades se miden siempre en twips. Si establece las
propiedades Height y Width para un controlador de impresora que no admite su uso, no se
producirá ningún error, y el tamaño del papel continuará siendo el mismo.

¡¡¡ Es mas recomendable utilizar la propiedad PaperSize para establecer las dimensiones
del papel. !!!

Orientation

Devuelve o establece un valor que indica si los documentos se imprimen con orientación
vertical u horizontal. No disponible en tiempo de diseño.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 22


Sintaxis Printer.Orientation = valor

valor es un valor o constante que determina la orientación de la página, según se describe a


continuación :

Constante Valor Descripción

vbPRORPortrait 1 Los documentos se imprimen con el lado más corto


arriba.

vbPRORLandscape 2 Los documentos se imprimen con el lado más largo


arriba.

Page
Devuelve el número de página actual.

Sintaxis Variable = Printer.Page ‘Variable contiene el número de la pág.


actual

Visual Basic mantiene un contador de páginas impresas desde el inicio de la aplicación o


desde la última vez que se utilizó la instrucción EndDoc en el objeto Printer. Este contador
comienza por uno y se incrementa en uno cada vez que:

Se utiliza el método NewPage.


Se utiliza el método Print y el texto a imprimir no cabe en la página actual.

Nota La salida de los métodos gráficos que no quepa en la página actual no genera una
página nueva, sino que se recorta para ajustarla a la zona de impresión de la página.

PaperBin
Devuelve o establece un valor que indica la bandeja predeterminada para la alimentación de
papel durante la impresión. No disponible en tiempo de diseño.

Sintaxis Printer.PaperBin = valor

valor es un valor o constante que especifica la bandeja predeterminada, según se describe a


continuación :
Constante Valor Descripción

vbPRBNUpper 1 Utilizar papel de la bandeja superior.


vbPRBNLower 2 Utilizar papel de la bandeja inferior.
vbPRBNMiddle 3 Utilizar papel de la bandeja intermedia.
vbPRBNManual 4 Esperar a la inserción manual de cada hoja.
vbPRBNEnvelope 5 Utilizar sobres del alimentador de sobres.
vbPRBNEnvManual 6 Utilizar sobres del alimentador de sobres, pero esperar
a la inserción manual.
vbPRBNAuto 7 (Predeterminado) Utilizar papel de la bandeja
predeterminada actual.
vbPRBNTractor 8 Utilizar papel del alimentador por tracción.
vbPRBNSmallFmt 9 Utilizar papel del alimentador de papel pequeño.
vbPRBNLargeFmt 10 Utilizar papel de la bandeja de papel grande.
vbPRBNLargeCapacity 11 Utilizar papel del alimentador de gran capacidad.
vbPRBNCassette 14 Utilizar papel del cartucho de cassette adjunto.

No todas las opciones están disponibles en todas las impresoras. Consulte la documentación
de la impresora para obtener descripciones más específicas de estas opciones.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 23


PaperSize
Devuelve o establece un valor que indica el tamaño de papel para la impresora actual. No
disponible en tiempo de diseño. El valor predeterminado es el establecido en la configuración
de la impresora en Windows. Con esta propiedad no se debe jugar alegremente. El valor que
se le dé a esta propiedad será el tamaño de ese papel “ficticio” que comentábamos mas atrás.

Sintaxis Printer.PaperSize = valor

valor es un valor o constante que especifica el tamaño del papel, según se describe a
continuación
Constante Valor Descripción

vbPRPSLetter 1 Carta, 8 ½ x 11 .
vbPRPSLetterSmall 2 Carta pequeña, 8 ½ x 11 .
vbPRPSTabloid 3 Tabloide, 11 x 17 .
vbPRPSLedger 4 Libro, 17 x 11 .
vbPRPSLegal 5 Legal, 8 ½ x 14 .
vbPRPSStatement 6 Declaración, 5 ½ x 8 ½ .
vbPRPSExecutive 7 Ejecutivo, 7 ½ x 10 ½ .
vbPRPSA3 8 A3, 297 x 420 mm
vbPRPSA4 9 A4, 210 x 297 mm
vbPRPSA4Small 10 A4 pequeño, 210 x 297 mm
vbPRPSA5 11 A5, 148 x 210 mm
vbPRPSB4 12 B4, 250 x 354 mm
bPRPSB5 13 B5, 182 x 257 mm
vbPRPSFolio 14 Folio, 8 ½ x 13 .
vbPRPSQuarto 15 Cuarto, 215 x 275 mm
vbPRPS10x14 16 10 x 14 .
vbPRPS11x17 17 11 x 17 .
vbPRPSNote 18 Nota, 8 ½ x 11 .
vbPRPSEnv9 19 Sobre #9, 3 7/8 x 8 7/8 .
vbPRPSEnv10 20 Sobre #10, 4 1/8 x 9 ½ .
vbPRPSEnv11 21 Sobre #11, 4 ½ x 10 3/8 .
vbPRPSEnv12 22 Sobre #12, 4 ½ x 11 .
vbPRPSEnv14 23 Sobre #14, 5 x 11 ½ .
vbPRPSCSheet 24 Hoja tamaño C
vbPRPSDSheet 25 Hoja tamaño D
vbPRPSESheet 26 Hoja tamaño E
vbPRPSEnvDL 27 Sobre DL, 110 x 220 mm
vbPRPSEnvC3 29 Sobre C3, 324 x 458 mm
vbPRPSEnvC4 30 Sobre C4, 229 x 324 mm
vbPRPSEnvC5 28 Sobre C5, 162 x 229 mm
vbPRPSEnvC6 31 Sobre C6, 114 x 162 mm
vbPRPSEnvC65 32 Sobre C65, 114 x 229 mm
vbPRPSEnvB4 33 Sobre B4, 250 x 353 mm
vbPRPSEnvB5 34 Sobre B5, 176 x 250 mm
vbPRPSEnvB6 35 Sobre B6, 176 x 125 mm
vbPRPSEnvItaly 36 Sobre, 110 x 230 mm
vbPRPSEnvMonarch 37 Sobre monarca, 3 7/8 x 7 ½ .
vbPRPSEnvPersonal 38 Sobre, 3 5/8 x 6 ½ .
vbPRPSFanfoldUS 39 Doblado estándar EE.UU., 14 7/8 x 11 .
vbPRPSFanfoldStdGerman 40 Doblado estándar alemán, 8 ½ x 12 .
vbPRPSFanfoldLglGerman 41 Doblado legal alemán, 8 ½ x 13 .
vbPRPSUser 256 Definido por el usuario

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 24


Al establecer las propiedades Height o Width de una impresora, se establece
automáticamente vbPRPSUser en PaperSize.

Port

Devuelve el nombre del puerto a través del cual se envía un documento a una impresora.

Sintaxis puertousado = Printer.Port

El sistema operativo determina el nombre del puerto, como por ejemplo LPT1: o LPT2:.

PrintQuality

Devuelve o establece un valor que indica la resolución de la impresora. No disponible en


tiempo de diseño.

Sintaxis Printer.PrintQuality = valor

valor es un valor o una constante que especifica la resolución de la impresora, según se


describe a continuación :

Constante Valor Descripción

vbPRPQDraft -1 Resolución borrador


vbPRPQLow -2 Resolución baja
vbPRPQMedium -3 Resolución media
vbPRPQHigh -4 Resolución alta

Además de los valores negativos predefinidos, también puede indicarse en valor un número
positivo de puntos por pulgada, como por ejemplo 300.

El valor predeterminado depende del controlador de la impresora y de su configuración actual.


El efecto de estos valores varía según la impresora y el controlador. En ciertas impresoras,
algunas opciones, o todas ellas, pueden producir el mismo resultado.

ScaleHeight, ScaleWidth

¡ Estas propiedades ya se comentaron mas atrás. Es completamente necesario entender


estas propiedades para poder manejar y dominar el objeto Printer. !

Devuelven o establecen el número de unidades de medida horizontal (ScaleWidth) y vertical


(ScaleHeight) del interior del papel donde vamos a volcar la información del objeto Printer.

Sintaxis Printer.ScaleHeight = valor


Printer.ScaleWidth = valor

Donde valor es una expresión numérica que especifica la medida horizontal o vertical. Este
valor va a determinar el número de unidades de medida que tiene el papel, NO su medida. Es
decir, podemos decir, mediante estas propiedades, que el papel tiene 2100 unidades de ancho
y 2970 unidades de alto. Si el papel es un DIN A4 (Medidas 210 x 297 mm) esa unidad de
medida sería precisamente una décima de milímetro. Podríamos haber elegido otros valores,
con lo que esa unidad de medida ya no serían décimas de mm. Sería una unidad de medida
cualquiera, pero el papel seguiría siendo DIN A4 y seguiría teniendo las mismas medidas
reales.

ScaleLeft, ScaleTop

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 25


Devuelven o establecen las coordenadas horizontal (ScaleLeft) y vertical (ScaleTop) de los
bordes izquierdo y superior de un objeto al utilizar métodos gráficos o al situar controles.

Sintaxis Printer.ScaleLeft = valor


Printer.ScaleTop = valor

donde valor es una expresión numérica que especifica la coordenada horizontal o vertical. El
valor predeterminado es 0.

Con estas propiedades y las relacionadas ScaleHeight y ScaleWidth, puede configurar un


sistema de coordenadas completo, con coordenadas positivas y negativas. Estas cuatro
propiedades de escala se relacionan con la propiedad ScaleMode de la siguiente forma:

Al establecer un valor en cualquier otra propiedad de escala, en ScaleMode se establece


automáticamente 0.
Al establecer en ScaleMode un número mayor que 0, ScaleHeight y ScaleWidth cambian a
la nueva unidad de medida, y en ScaleLeft y ScaleTop se establece 0. Además, los valores
de CurrentX y CurrentY cambian para reflejar las nuevas coordenadas del punto actual.

Resumiéndolo en palabras mas sencillas. Si, con las medidas de los ejemplos anteriores
(ScaleWidth = 2100, ScaleHeight = 2970) ponemos Printer.ScaleLeft = - 1050 estamos
diciendo que la coordenada horizontal absoluta en la parte izquierda de la hoja es de -1050. Si
el ancho del papel es de 2100, la coordenada X absoluta del eje central del papel será
entonces 0. Y la coordenada X de la parte derecha del papel será + 1050. Por lo tanto, si
ejecutamos el método gráfico :

Printer.Circle (0,1000), 300

dibujará un circulo de radio 300, con el centro en el eje vertical de la hoja (Coordenada X=0) a
una altura de 1000 (Coordenada Y=1000) de la parte superior del papel.

Si hubiésemos puesto Printer.ScaleTop = - 1500 estaríamos diciendo que la coordenada Y


absoluta de la parte superior del papel es - 1500. En ese caso, el círculo anterior se colocaría
a una distancia de 2500 (2500 = 1000 + 1500) del borde superior del papel.

ScaleMode
Devuelve o establece un valor que indica la unidad de medida de las coordenadas de un
objeto al utilizar métodos gráficos, o al situar controles.

Sintaxis Printer.ScaleMode = valor

donde valor es un número entero que especifica la unidad de medida, según se describe a
continuación

0 User. Indica que una o más de las propiedades ScaleHeight, ScaleWidth, ScaleLeft y
ScaleTop tienen valores personalizados.
1 (Predeterminado) Twip (1440 twips por pulgada lógica; 567 twips por centímetro
lógico).
2 Punto (72 puntos por pulgada lógica).
3 Píxel (la unidad mínima de la resolución del monitor o la impresora).
4 Carácter (horizontal = 120 twips por unidad; vertical = 240 twips por unidad).
5 Pulgada.
6 Milímetro.
7 Centímetro.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 26


Recomendación del autor de esta Guía del Estudiante. Una vez mas recomiendo que
controle la posición de los métodos gráficos y método Print fijando las unidades de medida
mediante ScaleHeight, ScaleWidth, (Si le es práctico, emplee ScaleLeft y ScaleTop para que
le coincida el punto central del papel con las coordenadas 0,0 y así usaría coordenadas
positivas y negativas) y cada vez que escriba o dibuje, coloque el “cursor” de escritura
mediante las propiedades CurrentX y CurrentY

TrackDefault

Devuelve o establece un valor booleano que determina si el objeto Printer apunta siempre a la
misma impresora, o si la impresora a la que apunta cambia cuando se modifica la impresora
predeterminada en el Panel de control del sistema operativo. No disponible en tiempo de
diseño.

Sintaxis Printer.TrackDefault = lógico

Donde lógico es una expresión booleana que determina la impresora a la que apunta el objeto
Printer, según se describe a continuación.

True (Predeterminado) El objeto Printer cambia la impresora a la que apunta al modificar la


impresora predeterminada en el Panel de control del sistema operativo.
False El objeto Printer continúa apuntando a la misma impresora cuando se modifica la
impresora predeterminada en el Panel de control del sistema operativo.

Al modificar el valor de la propiedad TrackDefault mientras se realiza un trabajo de impresión,


se envía una instrucción EndPage implícita al objeto Printer.

TwipsPerPixelX, TwipsPerPixelY

Devuelve el número de twips per pixel de un objeto medido horizontal (TwipsPerPixelX) o


verticalmente (TwipsPerPixelY).

Sintaxis Printer.TwipsPerPixelX
Printer.TwipsPerPixelY

En general, las rutinas del API de Windows requieren las medidas en píxels. Puede utilizar
estas propiedades para convertir rápidamente las dimensiones sin cambiar el valor de la
propiedad ScaleMode de los objetos.

Zoom

Devuelve o establece el porcentaje en que se amplía o reduce el resultado impreso. No está


disponible en tiempo de diseño.

Sintaxis Printer.Zoom = numero

Donde numero es una expresión numérica que evalúa en el porcentaje de ajuste de la salida
impresa. El valor predeterminado es 0, que especifica que la página impresa aparece con su
tamaño normal.

Comentarios

El valor de la propiedad Zoom ajusta el tamaño de la página impresa, en un factor de


Zoom/100, en relación con el tamaño aparente de la salida impresa. Por ejemplo, una página

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 27


de tamaño carta impresa con Zoom establecido como 50 contiene tantos datos como una
página de tamaño 17 por 22 pulgadas, porque el texto y los gráficos impresos se reducen a la
mitad de su altura y anchura originales.

El objeto Printers (Colección de objetos Printer)

La colección Printers le permite consultar las impresoras disponibles de forma que pueda
especificar la impresora predeterminada de la aplicación. Por ejemplo, se puede querer saber
cual de las impresoras disponibles usa un controlador de impresoras determinado. El siguiente
código comprueba todas las impresoras disponibles para saber la primera impresora cuya
orientación de página sea vertical:

Dim X As Printer
For Each X In Printers
If X.Orientation = vbPRORPortrait Then
' la define como predeterminada.
Set Printer = X
' Sale del bucle.
Exit For
End If
Next

Usando la instrucción Set se designa una de las impresoras de la colección Printers como
impresora predeterminada. El ejemplo anterior designa la impresora identificada por la variable
de objeto X, como impresora predeterminada de la aplicación.

Nota Si la colección Printers se usa para especificar una impresora concreta, como
Printers(3), sólo se puede tener acceso a sus propiedades de modo lectura. Para leer y escribir
las propiedades de una impresora concreta, primero se tiene que definir como impresora
predeterminada de la aplicación.

METODOS DEL OBJETO PRINTER

Circle

Dibuja un círculo, elipse o arco sobre un objeto. No acepta argumentos con nombre.

Sintaxis Printer.Circle Step (x, y), radio, color, inicio, final, aspecto

Vea una explicación completa de este método en el capítulo 7 Métodos Gráficos.

EndDoc

Termina una operación de impresión enviada al objeto Printer, liberando el documento al


dispositivo de impresión o a la cola.

Sintaxis Printer.EndDoc

Si EndDoc se invoca inmediatamente después del método NewPage, no se imprime la página


en blanco adicional.

KillDoc

Termina inmediatamente el trabajo de impresión actual.

Sintaxis Printer.KillDoc

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 28


Si el Administrador de impresión del sistema operativo controla el trabajo de impresión (el
Administrador de impresión está ejecutándose y la impresión en segundo plano está activada),
KillDoc elimina el trabajo de impresión actual y la impresora deja de recibir datos.
Si el Administrador de impresión no está controlando el trabajo de impresión (la impresión en
segundo plano está desactivada), puede que algunos o todos los datos se envíen a la
impresora antes de que KillDoc pueda tener efecto. En este caso, el controlador de la
impresora inicializa la impresora en cuanto puede y termina el trabajo de impresión.

Line

Dibuja líneas y rectángulos en un objeto. No acepta argumentos con nombre.

Sintaxis Printer.Line Step (x1, y1) - Step (x2, y2), color, BF

Vea este método mas ampliamente en el capítulo 7 Métodos Gráficos.

NewPage

Termina la página actual y avanza a la página siguiente en el objeto Printer.

Sintaxis Printer.NewPage

NewPage avanza a la página siguiente y restablece la posición de impresión en la esquina


superior izquierda de la nueva página. Cuando se le llama, NewPage incrementa la propiedad
Page del objeto Printer en 1.

PaintPicture

Presenta el contenido de un archivo gráfico (.BMP, .WMF, .EMF, .ICO o .DIB) en un objeto
Printer. No acepta argumentos con nombre.

Sintaxis

Printer.PaintPicture imagen, x1, y1, anchura1, altura1, x2, y2, anchura2, altura2, opecod

Puede ver mas información acerca de este método en el capítulo 7 Métodos Gráficos

Print

Imprime texto en el objeto Printer.

Sintaxis Printer.Print lista_salida

Donde lista_salida es una expresión o lista de expresiones a imprimir. Si se omite, se


imprimirá una línea en blanco.

En el argumento lista_salida puede poner un texto directamente (Printer.Print “Hola”) o una


variable (Printer.Print Textoaescribir). Puede también introducir algunas funciones de cadena
como la siguiente:

Spc(n) Se utiliza para insertar caracteres espacio en la salida, donde n es el número de


espacios a insertar.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 29


Puede introducir también Tabuladores :
Tab(n) Se utiliza para situar el punto de inserción en un número de columna absoluto, donde n
es el número de columna. Utilice Tab sin argumentos para situar el punto de inserción en la
línea siguiente, al principio de la zona de impresión.

Nota.- El uso de los tabuladores puede traerle mas problemas que ventajas. Los pasos de
tabulación dependen de cada impresora, y lo que es peor, de la programación de la propia
impresora. Por lo tanto, al usar Tab no controlamos del todo la posición de las columnas. Es
mucho mas práctico (y seguro) usar Printer.CurrentX y Printer.CurrentY para posicionar el
“puntero” de escritura del Objeto Printer.

Al terminar de imprimir Cualquier carácter o tabulador, el objeto Printer generará un Retorno


de Carro y un Avance de Línea, excepto que terminemos el método Print con un punto y
coma :

Las instrucciones :

Printer.Print “Hola”
Printer.Print “¿Qué tal ?” generarán la siguiente salida por impresora :

Hola
¿Qué tal ?

Si pusiésemos

Printer.Print “Hola ” ;
Printer.Print “¿Qué tal ?” la salida por impresora sería :

Hola ¿Qué tal ?

Nota Debido a que el método Print imprime normalmente con caracteres de espaciado
proporcional, es importante recordar que no hay relación entre el número de caracteres
impresos y el número de columnas de anchura fija que tales caracteres ocupan. Por ejemplo,
una letra ancha, como W, ocupa más de una columna de anchura fija, mientras que una letra
estrecha, como I, ocupa menos. Para tener en cuenta los casos en el que se utilizan caracteres
con una anchura mayor que la media, deberá asegurarse de que las columnas de las tablas se
encuentren lo bastante lejos unas de otras. Como alternativa, puede utilizar en la impresión
una fuente de anchura fija (como Courier) para hacer que cada carácter utilice sólo una
columna.

Para controlar perfectamente el punto donde se escribirá el siguiente carácter, utilice las
propiedades CurrentX y CurrentY. Es mucho mas práctico que usar, por ejemplo, el Tabulador
Tab(n)

Si usa Tab(n) con una determinada impresora, puede verse con la desagradable sorpresa que
en otra impresora no funciona de la misma forma. Como al desarrollar una aplicación nunca
sabe sobre que impresora va a imprimir, es mejor que no utilice Tab(n), sustituyéndolo por
CurrentX.

Método TextWidth

Puede conocer la anchura que va a ocupar un texto en la impresora. (o en un Formulario, en


un Picture) usando el Método TextWidth

AnchodelTexto = Printer.TextWidth (Textoaescribir)

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 30


Donde AnchodelTexto es una variable tipo Long que indicará el ancho (en las unidades de
medida definidas para el objeto Printer - Twips, Pixels, mm, o como siempre recomendaré, las
establecidas mediante ScaleWidth y ScaleHeight) y Textoaescribir es una variable tipo String
que contiene el texto a escribir.
Si la cadena de texto cuya longitud de impresión queremos analizar contiene retornos de carro,
TextWidth devuelve la anchura de la línea más larga.

Mediante este método puede escribir columnas de datos, mucho mejor que usando el Tab(n).
Suponga que quiere escribir en una columna, los datos Dato(1), Dato(2), ....Dato(N) que son
números. Quiere escribirlos de tal forma que la parte derecha del número quede alineada,
como hacemos casi siempre para poder sumarlos con facilidad. Supongamos que hemos
establecido las Propiedades Printer.ScaleWidth = 21000 y Printer.ScaleHeight = 29700. Damos
por hecho que el papel es un DIN A-4 (210 x 297 mm) por lo que estamos usando, como
unidad de medida en ambas coordenadas la centésima de mm.

Si queremos que las cifras queden alineadas en una columna cuya parte final sea 5000 (la
parte final de esa columna quedará a 50 mm. del margen izquierdo del papel), deberemos
calcular la longitud de cada cifra, y poner, como inicio de escritura de esa cifra 5000 - ancho :

Haríamos un bucle mas o menos como este :

Dim Ancho as Long ‘Ancho será una variable Long


For I = 1 To N ‘Imprimiremos N datos
Ancho = Printer.TextWidth (Str(Dato(I))) ‘Calculamos el ancho (para el Printer)
de cada
Printer.CurrentX = 5000 - Ancho ‘dato. Lo restamos a 5000 para que queden
Printer.CurrentY = K +(300 * I) ‘alineados por atrás. La coordenada Y
Printer.Print Str(Dato(I)) ‘será una constante K mas 3 mm
Next I

Observe que el ancho de una determinada cadena de caracteres no tiene porqué ser la misma
para un Formulario que para el Printer. Dependerá del tipo de fuente y del tamaño de esa
fuente que usemos en cada caso. Por eso, debe poner siempre Printer.TextWidth,
Form1.TextWidth, etc.

Método TextHeight

Este método es idéntico al anterior, pero relativo a la altura. No vamos a alargar la explicación
dada la similitud con el anterior. Este método nos permite separar adecuadamente las líneas
de un escrito. Es muy útil sobre todo cuando utilizamos distintos tipos de letra dentro del
mismo escrito.

Método PSet

Asigna a un punto de un objeto Printer un color especificado. No acepta argumentos con


nombre.

Sintaxis Printer.PSet Step (x, y), color

Step Opcional. Palabra reservada que especifica que las coordenadas son relativas
a la posición gráfica actual proporcionada por las propiedades CurrentX y CurrentY.

(x, y) Requeridos. Valores de simple precisión que indican las coordenadas


horizontales (eje x) y verticales (eje y) del punto a establecer.

color Opcional. Valor entero largo que indica el color RGB especificado para el punto. Si se
omite, se utiliza el valor de la propiedad ForeColor. Puede utilizar la función RGB o la función

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 31


QBColor para especificar el color.

El tamaño del punto dibujado depende del valor de la propiedad DrawWidth. Cuando
DrawWidth es 1, PSet establece un píxel al color especificado. Cuando DrawWidth es mayor
que 1, se centra el punto en las coordenadas especificadas.

La forma en que se dibuja el punto depende de los valores de las propiedades DrawMode y
DrawStyle.

Cuando se ejecuta PSet, las propiedades CurrentX y CurrentY toman el valor del punto
especificado en los argumentos.

Vacíe un píxel con el método PSet especificando las coordenadas del píxel y utilizando el
valor de la propiedad BackColor como argumento color.

LSB Visual Basic - Guia del Estudiante Capítulo 7 Página 32