Los Métodos Gráficos.



Los métodos gráficos, propios de las Cajas de Dibujo, de los Formularios y del objeto Printer, permiten dibujar formas, líneas, colorear, etc.; sin embargo es necesario conocer ciertas propiedades de estos controles para poder aprovechar su total potencial.
La propiedad Autoredraw permite redibujar los métodos gráficos. Esta propiedad debe estar a True para visualizarlos.
La propiedad DrawWidth especifica el grosor del trazo del método gráfico.
La propiedad BackColor especifica el color de fondo del control.
La propiedad FillStyle especifica el estilo de relleno que tendrán los métodos gráficos.
La propiedad FillColor especifica el color de relleno que tendrán los métodos gráficos.
La propiedad BorderColor especifica el color del borde de los métodos gráficos.

Método Scale.

Este método permite dar una escala de medida al control. Es muy útil para utilizar sistemas de coordenadas y para conocer dónde aparecerán los gráficos. La propiedad Scalemode contiene unidades de medida para utilizar con los métodos gráficos; por defecto es el Twip, pero también se pueden utilizar Pixeles, centímetros, milímetros e incluso puede definirse otra unidad.

Tabla 7 - Constantes de la propiedad ScaleMode
Unidad de medida Constante Valor
Definida por usuario vbUser 0
Twips (1440*) vbTwips 1
Puntos (72*) vbPoints 2
Pixeles vbPixels 3
Caracteres vbCharacters 4
Pulgadas vbInches 5
Milímetros vbMillimeters 6
Centímetros vbCentimeters 7
* unidades por pulgada

La forma general de este método es el siguiente:

nObjeto.Scale (x1, y1)-(x1, y2)

Donde x1 e y1 definen las coordenadas del vértice superior izquierdo del objeto y x2 e y2 definen las coordenadas del vértice inferior derecho del objeto.

Método Cls.

El método Cls elimina todos los métodos gráficos que haya en un objeto; este método no lleva ningún argumento.

Método Print.

El método Print permite escribir texto en un objeto. El color y tipo de letra estará determinado por las propiedades ForeColor y Font de dicho objeto.
La forma general de este método es:

nObjeto.Print texto

Donde texto es una cadena de texto con lo que desea escribir en el objeto.
El texto comenzará a escribirse según las coordenadas CurrentX y CurrentY del objeto.

Método PSet.

Este método permite dibujar puntos en un objeto. La forma general de este método es:

nObjeto.PSet Step (x,y), color

Donde Step es un argumento opcional que indicará si (x,y) serán las coordenadas absolutas o relativas respecto a las propiedades CurrentX y CurrentY, según se omita o se agregue este argumento. (x,y) son las coordenadas del punto. Color es opcional y define el color del punto; si se omite el punto tendrá el color de la propiedad ForeColor.

Método Line.

Este método permite dibujar líneas y rectángulos. La forma general del método Line es la siguiente:

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

Donde Step es opcional en ambos casos y significan lo mismo que en el método PSet; idem para color. x1 e y1 son opcionales y son la coordenada del inicio de la línea, si se omite dicho inicio estará determinado por las propiedades CurrentX y CurrentY. x2, y2 son las coordenadas del final de la línea y son obligatorias. El argumento B dibuja un rectángulo, su vértice superior izquierdo estará determinado por la coordenada x1, y1 y el inferior derecho por la coordenada x2, y2; el argumento F rellena el rectángulo con color.

Método Circle.

Este método permite dibujar circunferencias, arcos y elipses en un objeto. La sintaxis del método es la siguiente:

nObjeto.Circle Step (x,y), radio, color, start, end, aspect

Donde Step es opcional y tiene el mismo significado que en los métodos anteriores; (x,y) son las coordenadas del centro de la circunferencia; radio es el radio; start y end son opcionales y permiten dibujar arcos siendo start el ángulo inicial y end el ángulo final; aspect permite dibujar elipses, es opcional y es la relación entre el diámetro vertical y el diámetro horizontal, cuando se utiliza este argumento, radio define el mayor de ambos diámetros.

Método Point.

El método Point devuelve un tipo Long con el valor del color de un punto de un objeto. Su sintaxis es:

nObjeto.Point (x,y)

Donde (x,y) son las coordenadas del punto.
Ejemplo

En el siguiente ejemplo se construirá un sencillo programa de diseño gráfico. Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles:

Control Propiedad Valor
Form Name frmDraw
" " Caption Programa de Dibujo
PictureBox Name pctPapel
" " Autoredraw True
" " ScaleMode Pixels
ComboBox Name cmbFigura
" " List Punto - Línea - Rectángulo - Rectángulo relleno - Círculo
ComboBox Name cmbColor
" " List Blanco - Negro - Azul - Rojo - Amarillo - Verde - Aguamarina - Magenta
Label Name lblCoord
" " Caption
" " Index 0, 1
CommandButton Name cmdCls
" " Caption &Limpiar

Escribe el siguiente código en la ventana de código del formulario:

Option Explicit
Dim
vcolor as ColorConstants, xinic as Integer, paso as Boolean, radio as Integer


Private Sub Form_Load()
cmbFigura.ListIndex=0:cmbColor.ListIndex=1:vcolor=vbBlack
End Sub

Private Sub cmbColor_Click()
Select Case cmbColor.ListIndex
Case 0
vcolor=vbWhite
Case 1
vcolor=vbBlack
Case 2
vcolor=vbBlue
Case 3
vcolor=vbRed
Case 4
vcolor=vbYellow
Case 5
vcolor=vbGreen
Case 6
vcolor=vbCyan
Case 7
vcolor=vbMagenta
End Select
End Sub


Private Sub cmdCls_Click()
pctPapel.Cls:paso=False
End Sub


Private Sub cmbFigura_Click() paso=False
End Sub


Private Sub pctPapel_MouseMove(Button as Integer, Shift as Integer, X as Single, Y as Single)
lblCoord(0).Caption=Fix(X):lblCoord(1).Caption=Fix(Y)
End Sub

Private Sub pctPapel_Click()
Select Case cmbFigura.ListIndex
Case 0
pctPapel.Pset (lblCoord(0).Caption,lblCoord(1).Caption), vcolor
Case 1,2,3
Call dLinea lblCoord(0).Caption, lblCoord(1).Caption, cmbFigura.ListIndex
Case 4
radio=InputBox("Ingrese el radio",0,"Radio")
pctPapel.Circle (lblCoord(0).Caption, lblCoord(1).Caption, radio, vcolor
End Select
End Sub


Private Sub dLinea(x1 as Integer, y1 as Integer, figura as Byte)
If paso=False Then
xinic=x1:yinic=y1:paso=True:Exit Sub
Else
Select Case
figura
Case 1
pctPapel.Line (xinic,yinic)-(x1,y1), color:paso=False
Case 2
pctPapel.Line (xinic,yinic)-(x1,y1), color, B: paso=False
Case 3
pctPapel.Line (xinic,yinic)-(x1,y1), color, BF: paso=False
End Select
End If
End Sub


Pulse F5 para probar la aplicación.

No hay comentarios:

Publicar un comentario