PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 6ENRERA
PRÀCTICA 1 2 (pràctica optativa) 3 (pràctica optativa) 4 5 6 8 8
 

Pràctica optativa


Executar el programa m6p2.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m6p2.

Executar Visual Basic per editar el projecte (acabat): m6p2.vbp.


Les instruccions per fer un quadre de dibuix o un formulari a mida



Si us fixeu en la figura anterior, veureu que un sistema d'eixos de coordenades cartesianes es pot definir per les coordenades del vèrtex A i del vèrtex B. El mètode Scale està associat als objectes en els que podeu dibuixar, té com a paràmetres les coordenades dels vèrtex A i B i serveix per definir el sistema de coordenades que sigui adient al problema que esteu treballant:

[object.]Scale [(x1, y1) - (x2, y2)].


En aquesta activitat creareu un formulari i un quadre de dibuix. En aquest quadre de dibuix, que conté el quadrat més petit, definireu un sistema de coordenades en mil.límetres i hi posareu l'origen de coordenades al mig del quadre. Les direccions dels eixos seran les normals, d'esquerra a dreta l'eix X i d'avall cap amunt l'eix Y.

També creareu en el formulari els controls necessaris per poder canviar l'escala, canviant els vèrtex A i B, i veure l'efecte que aquests canvis produeixen en una figura dibuixada dins del quadre de dibuix.



Aquest projecte el desareu a C:\VBCurs\VBActivi\m6\p2 amb el nom m6p2.


Fase de disseny de la interfície d’usuari

Els objectes principals d'aquest formulari son els següents:

Objecte

Propietat

Valor

Formulari

(Nombre)

frmEixos

 

Caption

Eixos de coordenades

Botó Dibuixa

(Nombre)

cmdDibuixa

 

Caption

Dibuixa

Botó Esborra

(Nombre)

cmdEsborra

 

Caption

Esborra

Botó Escala

(Nombre)

cmdAplicaEscala

 

Caption

Aplica escala

Botó EscalaReal

(Nombre)

cmdEscalaReal

 

Caption

Escala en mil·límetres

Caixa de text: Coordenada X vèrtex A (1)

(Nombre)

txtXA

 

Text

Caixa de text: Coordenada Y vèrtex A (2)

(Nombre)

txtYA

 

Text

Caixa de text: Coordenada X vèrtex B (3)

(Nombre)

txtXB

 

Text

Caixa de text: Coordenada Y vèrtex B (4)

(Nombre)

txtYB

 

Text

Quadre de dibuix (7)

(Nombre)

picCoordenades

Etiqueta Alt (5)

(Nombre)

lblMidaAlt

 

Caption

Ample:

Etiqueta Ample (6)

(Nombre)

lblMidaAmple

 

Caption

Alt:

Etiqueta informativa (8)

(Nombre)

lblInformativa

 

Caption

Mides del quadre de dibuix en mil·límetres


Els altres objectes que falten són eines: etiqueta, forma, línia que deixem al lector que les col.loqui amb les propietats pertinents.


Fase de programació de respostes a events

Procediments d'àmbit a tot el formulari

El procediment AplicaEscala, d'àmbit tot el formulari i que canvia l'escala del dibuix, rep quatre paràmetres, que són les coordenades dels dos punts VèrtexA i VèrtexB:
    Sub AplicaEscala (XA As Single, YA As Single, XB As Single, YB As Single)
      PicCoordenades.Scale (XA, YA)-(XB, YB)
      lblMidaAmple.Caption = XB - XA
      lblMidaAlt.Caption = YA - YB
      txtXA = Str(Int(XA))
      txtYA = Str(Int(YA))
      txtXB = Str(Int(XB))
      txtYB = Str(Int(YB))
    End Sub

Aquest procediment canvia l'escala i estableix els valors de les coordenades dels punts A i B a les caixes de text.

Tema: Scale Subtema: Scale Method


Mètodes associats a l'event Load

Per al formulari frmEixos:
    Sub Form_Load ()
      Dim VèrtexAX As Single
      Dim VèrtexAY As Single
      Dim VèrtexBX As Single
      Dim VèrtexBY As Single
      Dim MidaX As Single
      Dim MidaY As Single
      Dim ConversióTwipsMilímetres As Single
    
      ConversióTwipsMilímetres = 10 / 567
      MidaX = picCoordenades.Width * ConversióTwipsMilímetres
      MidaY = picCoordenades.Height * ConversióTwipsMilímetres
      VèrtexAX = -MidaX / 2
      VèrtexAY = MidaY / 2
      VèrtexBX = MidaX / 2
      VèrtexBY = -MidaY / 2
      AplicaEscala VèrtexAX, VèrtexAY, VèrtexBX, VèrtexBY
    End Sub

Després d'executar el procediment AplicaEscala, MidaX i MidaY són les mides del quadre del dibuix en mil·límetres. Encara que en pantalla això no sigui molt real perquè la pantalla pot ser més o menys grossa, si imprimiu el formulari i mesureu les mides del quadrat de dibuix, en el paper veureu que coincideixen exactament amb les calculades.


Mètodes associats a l'event Click

El procediment associat al botó cmdDibuixa és el següent:
    Sub cmdDibuixa_Click ()
      Dim i As Integer
    
      PicCoordenades.Line (-10, -10)-(10, 10), QBColor(5), BF
      For i = 0 To 100 Step 10
        PicCoordenades.PSet (i, 0), QBColor(5)
        PicCoordenades.PSet (0, i), QBColor(5)
      Next
    End Sub

En aquest procediment dibuixeu un quadrat de color 5 i de costat 20 unitats. També dibuixeu 11 punts a sobre de l'eix X i altres onze a sobre de l'eix Y, separats 10 unitats entre ells. Fixeu-vos que són unitats que depenen de l'escala. Si l'escala és en mil.límetres les unitats de mesura d'aquests dibuixos seran mil·límetres, però en el moment que canvieu l'escala deixaran de ser mil·límetres.

Per als botons de comandament:

Ens queden tres procediments de resposta als altres tres botons de comandament que són:

Botó Esborrar:
    Sub cmdEsborra_Click ()
      PicCoordenades.Cls
    End Sub

Botó EscalaReal:
    Sub cmdEscalaReal_Click ()
      Form_Load
    End Sub

Botó Escala:
    Sub cmdAplicaEscala_Click ()
      AplicaEscala Val(txtXA), Val(txtYA), Val(txtXB), Val(txtYB)
    End Sub

Quan executeu aquest programa heu de prémer el botó Dibuixa i observareu el quadrat de costat 20 en mil·límetres. Canvieu l'escala, fent que els valors dels punts A i B siguin els següents: VèrtexA(-15,15) i VèrtexB(15,-15). Premeu els botons Esborra, AplicaEscala i Dibuixa. El quadrat és molt més gros ja que, encara que és un quadrat del mateix costat, 20 unitats, aquestes unitats no són mil·límetres perquè l'amplada del quadrat de dibuix és ara 30 i l'alçada també. Podeu fer ús de les següents escales i veure l'efecte que produeixen en els dibuixos del quadre de dibuix.

VèrtexA(-100,100)

VèrtexB(100,-100)

VèrtexA(-50,150)

VèrtexB(150,-50)

VèrtexA(-40,20)

VèrtexB(40,-20)

VèrtexA(-20,30)

VèrtexB(20,-30)




Exercicis optatius

Si en feu algun el podeu enviar al professor tutor.
(Directori C:\VBCurs\VBExerci\m6\p2 )

E1. Agafeu un paper quadriculat. Dibuixa a sobre un rectangle de les proporcions de la figura 1. Dibuixeu dins alguna cosa com la de la figura. Si poseu l'origen en el vèrtex inferior esquerra, calculeu quines són les coordenades dels vèrtex que serveixen per definir un sistema d'eixos en Visual Basic. Calculeu les coordenades dels punts del dibuix. Feu el programa.





Cal enviar els següents fitxers:
    Fitxer projecte m6p2e1.vbp
    Fitxer formulari m6p2e1.frm
    Fitxer executable m6p2e1.exe
Nota: Realitzeu les instruccions de dibuix en l'event PicCoordenades_Paint. Observeu alguna diferència amb els altres llocs on heu realitzat els dibuixos?.



E2. La figura següent és un tauler d'escacs. Heu de preparar una escala en la qual l'origen sigui, igual que a l'exercici 1, el vèrtex inferior esquerra. El quadrat de dibuix tindrà 8 x 8 unitats. Ara heu de fer files de rectangles, amb el mètode Line i el paràmetre BF. Podeu fer servir la instrucció For... next....





Cal enviar els següents fitxers:
    Fitxer projecte m6p2e2.vbp
    Fitxer formulari m6p2e2.frm
    Fitxer executable m6p2e2.exe