La resolución del formulario se establece con la propiedad ScaleMode que
tiene los siguientes valores: Valor Descripción |
Normalmente se deja en twips y se modifican las propiedades
ScaleHeight,ScaleWidth,ScaleLeft y ScaleTop. Utilizando las propiedades relacionadas
ScaleHeight, ScaleWidth, ScaleLeft y ScaleTop, se 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: |
Crea un nuevo proyecto en visual Basic y añade un botón de acción con
el siguiente código: Private Sub Command1_Click() Al ejecutarlo obtendrás una diagonal y un círculo en el cuadrante inferior izquierdo. |
|
Private Sub Command1_Click() ScaleMode = 3 ScaleLeft = -100 ScaleTop = -100 ScaleWidth = 200 ScaleHeight = 200 DrawWidth = 2 ' Establece DrawWidth. ForeColor = QBColor(4) Line (0, 0)-(100, 100), QBColor(14), BF Line (-100, -100)-(0, 0), &H8000&, BF Line (-50, -50)-(0, 0), RGB(255, 255, 0), BF FillColor = QBColor(Int(Rnd * 15)) FillStyle = Int(Rnd * 8) 'Valor FillStyle aleatorio. Circle (-50, 50), 25 End Sub |
|
Crea un nuevo proyecto añadiendo el código siguiente al botón de acción: | Private Sub Command1_Click() pi = 3.141592 ScaleMode = 3 ScaleLeft = -100 ScaleTop = -100 ScaleWidth = 200 ScaleHeight = 200 DrawWidth = 1 ' Establece DrawWidth. ForeColor = QBColor(4) Line (-100, 0)-(100, 0) Line (0, -100)-(0, 100) For x = -100 To 100 y = Sin(x * pi / 180) PSet (x, y * 100), QBColor(4) Next FillColor = QBColor(Int(Rnd * 15)) FillStyle = Int(Rnd * 8) 'Valor FillStyle aleatorio. End Sub |
Las coordenadas de pantalla se establecen entre -100 y 100 El grosor de los puntos se pone a 1 y el color 4 (rojo) Las dos instrucciones Line dibujan los ejes de coordenadas y el bucle calcula el seno de -100 a 100 (radianes) dibujan dose los puntos en las coordenadas x,y con Pset |
Como el valor calculado de seno es pequeño, se multiplica por 100 para
apreciar mejor la forma característica. Modifica el programa para calcular el coseno y la tangente. Para evitar un desbordamiento al calcular el valor de y introduce estas líneas: If y < -100 Then y = -100 If y > 100 Then y = 100
|
En el siguiente ejemplo crea un nuevo proyecto e introduce un temporizador
Timer, un PictureBox y un botón de acción. Haz doble click sobre el Timer y escribe: Private Sub Timer1_Timer() BackColor = QBColor(Rnd * 15) ForeColor = QBColor(Rnd * 10) Picture1.BackColor = QBColor(Rnd * 15) Picture1.ForeColor = QBColor(Rnd * 10) End Sub |
Al botón añádele este código: Private Sub Command1_Click() Timer1.Interval = 500 'activa el temporizador End Sub Cuando lo ejecutes observa como cambian de color tanto el rectángulo del
Picturebox como el fondo del formulario. |
Ahora selecciona el PictureBox y haz doble click para entrar en la ventana
de código. Selecciona el evento MouseMove y escribe la instrucción siguiente: Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.PSet (X, Y), QBColor(Rnd * 15) End Sub Este evento captura la posción del ratón en las variables X e Y dibujando en las coordenadas correspondientes del cuadro de imagen con un color al azar cuando el puntero del ratón pasa sobre él. |
|
El siguiente programa calcula el área de un triángulo según la formula
de Herón. Crea un proyecto nuevo y añade 3 cuadros de texto, una etiqueta Label, un
control image y un botón de acción. Haz click sobre la propiedad picture del control
image y busca el fichero triangulo.gif. En el evento click del botón escribe el código que ves a a la derecha. Se crean 3 variables enteras y 2 de simple precisión. En las variables A,B y C se almacena el contenido de los cuadros de texto (lados del triángulo) convertidos a números con CInt y se comprueba que el triángulo pueda existir, deteniéndose el programa en caso contrario. |
Private Sub Command1_Click() Dim A, B, C As Integer Dim P, S As Single A = CInt(text1) B = CInt(text2) C = CInt(text3) If ((A + B) < C) Or ((A + C) < B) Or ((B + C) < A) Then MsgBox ("Triángulo imposible") End End If P = (A + B + C) / 2 S = (P * (P - A) * (P - B) * (P - C)) ^ 0.5 Label1 = "El área del triángulo es: " + CStr(S) End Sub |
Si es correcto se calcula el perímetro en P y el área en S, mostrándose
en la etiqueta Label1.Si los valores introducidos en los cuadros de texto no permiten
construir el triángulo la instrucción MsgBox("..") mostrará una ventana modal
con el aviso entre comillas y a continuación la instrucción End detendrá el programa.
|
|
Crea este programa, ejecútalo y mueve el ratón sobre el formulario: | |
Las instrucciones gráficas pueden utilizarse junto con la orden print
para mostrar cadenas de texto en cualquier posición del formulario. En el programa
siguiente, en el evento MouseMove del formulario, se establece la unidad de medida
(ScaleMode 3) en pixels y se calculan valores al azar (Rnd) para las propiedades CurrentX
y CurrentY del formulario guardan la posición donde se situa el cursor gráfico. A continuación se dibujan círculos con radio variable de 0 a 50 y con centro en estas posiciones. Por último la instrucción Print muestra el mensaje en dicha posición. |
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single) ScaleMode = 3 CurrentX = CInt(Rnd * 500) CurrentY = CInt(Rnd * 500) Circle (CurrentX, CurrentY), Rnd * 50 Print "hola" End Sub |
En el siguiente programa vas a dibujar sobre un fondo con una imagen. Para
ello crea un nuevo proyecto e inserta en el formulario un PictureBox. |
|
Su funcionamiento es el siguiente: El primer botón borra cualquier gráfico que haya en el PictureBox (excepto la imagen de fondo) con Cls y dibuja una elipse con grosor 2 en las coordenadas (twips) 1000,300 y radio 500. Después coloca el cursor gráfico en las coordenadas 800,200 para escribir el mensaje. El segundo botón hace lo mismo pero modificando la elipse y el mensaje. |
|
Private Sub Command1_Click() Picture1.DrawWidth = 2 Picture1.Cls Picture1.Circle (1000, 300), 500, QBColor(4), , , 0.5 Picture1.CurrentX = 800 Picture1.CurrentY = 200 Picture1.Print "hola" End Sub Private Sub Command2_Click() Picture1.DrawWidth = 2 Picture1.Cls Picture1.Circle (1000, 300), 600, QBColor(4), , , 0.5 Picture1.CurrentX = 400 Picture1.CurrentY = 200 Picture1.Print "¿que tal estás?" End Sub |
|
Para comprobar como el borrado de los objetos gráficos no afecta al fondo del control de imagen, selecciona el pictureBox y añade al procedimiento MouseMove el código de la derecha. Este procedimiento se ejecuta cada vez que el ratón se mueve sobre la imagen y le pasa las coordenadas X e Y de su posición. El procedimiento las utiliza para situar el centro de la elipse y el texto del mensaje. | Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single) Picture1.DrawWidth = 2 Picture1.Cls Picture1.Circle (X + 500, Y), 600, QBColor(4), , , 0.5 Picture1.CurrentX = X - 50 Picture1.CurrentY = Y - 50 Picture1.Print "¿que tal estás?" End Sub |
Este código añadido al procedimiento Click del formulario te mostrará
círculos concéntricos de distintos colores cada vez que hagas click con el ratón: Private Sub Form_Click() Dim CX, CY, Radio ' Declara la variable. ScaleMode = 3 ' Establece la escala a píxeles. DrawWidth = 5 CX = ScaleWidth / 2 ' Establece la posición X. CY = ScaleHeight / 2 ' Establece la posición Y. If CX > CY Then Limit = CY Else Limit = CX For Radio = 0 To Limit ' Establece el radio. Circle (CX, CY), Radio, RGB(Rnd * 255, Rnd * 255, Rnd * 255) Next Radio End Sub |
|