Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica
Tiparirea textului si a graficii in Visual Basic

Tiparirea textului si a graficii in Visual Basic


Tiparirea textului si a graficii in Visual Basic

Acest capitol isi propune sa dea toate informatiile despre afisarea textului si a graficii, precum si printarea in Visual Basic. Se vor prezenta metode si proprietati cu care veti putea pregati rapoarte profesioniste. Veti invata sa desenati, atat pe ecran cat si pe hartie. Exemplele concrete va vor aduce multe lamuriri asupra unor probleme pe care le-ati considerat dificile.

Pe langa obiectele studiate pana acum, limbajul Visual Basic ne pune la dispozitie o serie de facilitati pentru elemente de grafica. Acestea pot avea un impact important in perceperea aplicatiilor ingineresti, prin obtinerea unor rapoarte pe hartie care combina textul cu grafica.

Pentru uniformitatea exprimarii, vom considera ca un text este ca si un element de grafica, adica se genereaza si se pozitioneaza pe ecran. Prin urmare, desenarea unui cerc, dreapta etc., este identica cu desenarea unui text (fraza). De altfel, textul este considerat ca fiind grafica si in alte limbaje sau aplicatii, cum este, de exemplu, AutoCAD-ul.

Atunci cand se face un desen pe calculator trebuie ca acesta sa fie raportat la un sistem de referinta si sa se precizeze unitatile de masura cu care lucreaza. În Visual Basic desenarea se poate face pe suprafata unui formular, a unei casete de imagine sau in obiectul Printer.



În cele ce urmeaza se vor clarifica conceptele legate de desenarea in Visual Basic si va fi studiat un caz practic.

Sistemul de coordonate

Sistemul de coordonate reprezinta o retea rectangulara bidimensionala, pe baza careia se definesc pozitiile obiectelor intr-un formular. O pozitie a unui obiect se defineste prin intermediul a doua coordonate scrise sub forma:

(x, y)

unde

x - este pozitia punctului de-a lungul axei OX

y - este pozitia punctului de-a lungul axei OY

Acest sistem de coordonate are originea in coltul stanga-sus a formularului asa cum este prezentat in figura 16.1.

Fig.16.1. Sistemul de coordonate al unui formular

 

y1

 


Orice obiect din formular este pozitionat cu partea sa din stanga-sus. În figura 16.1 este vorba de o caseta de text care are coordonatele (x1, y1). Tot asa pot fi desenate segmente de dreapta, arce de cerc, cercuri etc.

Pentru sistemul de coordonate din Visual Basic sunt valabile cateva reguli:

Atunci cand se deplaseaza sau redimensioneaza un control se foloseste sistemul de coordonate al containerului acelui control. Daca obiectul este desenat direct pe formular, formularul este containerul. Daca controlul este plasat in interiorul unui cadru sau al unei casete cu imagine, cadrul, respectiv caseta cu imagine, reprezinta containerul.

Toate metodele grafice si Print folosesc sistemul de coordonate al containerului. De exemplu, instructiunile care deseneaza in interiorul unei casete cu imagine folosesc sistemul de coordonate al acesteia.

Instructiunile care redimensioneaza sau deplaseaza un formular, exprima intotdeauna pozitia si dimensiunea acestuia in twips. Un twip reprezinta 1/20 dintr-un punct de imprimanta (567 de twips echivaleaza cu un centimetru). Aceasta echivalenta se refera la dimensiunea unui obiect tiparit. În realitate, distantele efective pe ecran variaza in functie de dimensiunea monitorului.

Coltul din stanga-sus al ecranului este intotdeauna (0, 0). Sistemul de coordonate implicit al oricarui container are originea in coltul din stanga-sus al containerului.

Unitatile de masura folosite pentru cele doua axe poarta numele generic de scala. În Visual Basic fiecare axa poate avea propria scala, acest lucru fiind foarte util in aplicatiile ingineresti.

Este posibila modificarea atat a directiei axelor cat si a originii sistemului de coordonate, lucru deosebit de util avand in vedere ca noi nu suntem obisnuiti cu originea in coltul din stanga-sus, iar axa OY sa fie indreptata in jos.

Modificarea sistemului de coordonate al unui obiect

Pentru sistemul de coordonate pot fi folosite trei tipuri de scala si anume:

Scala implicita;

O scala selectata din cele cateva standard;

O scala proprie.

În continuare vor fi explicate aceste tipuri de scala.

Scala implicita pune originea in coltul din stanga-sus al obiectului, iar unitatea de masura este twip-ul. Un formular sau o caseta cu imagine are mai multe proprietati legate de scala (ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight si ScaleMode) si o metoda (Scale) pentru definirea sistemului sau de coordonate.

Pentru a reveni la scala implicita se foloseste metoda Scale fara nici un argument.

Selectarea unei scale standard se face atribuind proprietatii ScaleMode una din valorile de mai jos:

Definita de utilizator. Daca modificati direct ScaleLeft, ScaleTop, ScaleWidth sau ScaleHeight, proprietatea ScaleMode capata automat valoarea 0;

1 - Twips, scala implicita. Un inch 1440 twips;

2 - Puncte. 72 puncte inseamna un inch;

3 - Pixeli, cea mai mica unitate de rezolutie pe monitor sau imprimanta;

4 - Caractere. Un caracter tiparit are inaltimea de 1/6 si latimea 1/12 dintr-un inch;

5 - Inch;

6 - Milimetri;

7 - Centimetri.

Modurile 0-3 se refera la dimensiuni de pe ecran iar modurile 4-7 se refera la dimensiuni tiparite. De exemplu, daca lungimea unui obiect este de 50 de unitati cand ScaleMod are valoarea 6, lungimea obiectului tiparit va fi de 50 milimetri.

Crearea unei scale proprii se face cu ajutorul proprietatilor ScaleLeft, ScaleTop, ScaleWidth si ScaleHeight. Aceste proprietati pot fi folosite atat pentru setarea scalei cat si pentru extragerea de informatii despre scala sistemului de coordonate folosit.

Proprietatile ScaleLeft si ScaleTop asociaza valori numerice pentru coltul din stanga-sus al unui obiect. De exemplu, pentru a fixa valorile acestor proprietati pentru un formular si pentru un obiect numit picArena se foloseste secventa de cod urmatoare:

ScaleLeft

ScaleTop = 100

picArena.ScaleLeft = 150

picArena.ScaleTop = 200

Aceste valori sunt aratate in figura 16.2.

Fig. 16.2.

 



Formularul Form2 este pozitionat pe ecran in punctul (100, 100). În formular, obiectul picArena este pozitionat in punctul (200, 150). Desi aceste instructiuni nu schimba in mod direct dimensiunea sau pozitia obiectelor in cauza, ele afecteaza instructiunile care urmeaza.

Proprietatile ScaleWidth si ScaleHeight definesc unitatile in raport cu latimea si inaltimea curenta a suprafetei de desenare. Setarea acestor proprietati se face astfel:

ScaleWidth

ScaleHeight = 600

Aceste instructiuni definesc pe orizontala o unitate egala cu 1/1000 din latimea interna a formularului si pe verticala ca fiind 1/600 din inaltimea interna curenta aceluiasi formular. Daca formularul este mai tarziu redimensionat, unitatile raman aceleasi.

Concluzionand, putem spune ca modificarea unui sistem de coordonate se poate face prin setarea convenabila a proprietatilor ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight si ScaleMode care se face din fereastra Properties - Form.

O modalitate mai convenabila de modificare a sistemului de coordonate o reprezinta utilizarea metodei Scale, care are urmatoarea sintaxa:

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

unde,

x1, y1 - sunt coordonatele coltului din stanga-sus


x2, y2 - sunt coordonatele coltului din dreapta-jos

În figura 16.3 este prezentat un formular de dimensiunile 500 x 500, avand sintaxa:

Scale (100, 100) - (600, 600)

ScaleLeft

ScaleTop = 100

ScaleWidth = 500

ScaleHeight = 500

 


 


Dupa ce am vazut cum se administreaza suprafata pe care se deseneaza, in mod firesc urmeaza desenarea propriu-zisa. Elementele de baza ale desenarii sunt punctul, linia, cercul si arcul de cerc.

Desenarea entitatilor

Înainte de a desena este necesar, pentru orice eventualiate, sa stergem ecranul. Aceasta operatiune se face cu metoda Cls, avand sintaxa urmatoare:

Obiect.]Cls

Utilizarea metodei fara precizarea unui obiect , are ca efect stergerea formularului caruia ii apartine codul corespunzator.

Desenarea punctelor se face cu metoda PSet, avand sintaxa:

[obiect.]Pset (x, y)[, culoare]

unde,

(x, y) - sunt coordonatele punctului

culoare - culoarea in care se va desena punctul

Daca nu se precizeaza culoarea, Pset coloreaza pixelul in culoarea de desenare (ForeColor).

Pentru precizarea culorii se foloseste functia RGB(r, g, b), ai carei parametri reprezinta numere intregi intre 0 - 255, pentru diferite nuante de rosu, verde si albastru. Astfel, pentru a desena un punct rosu in punctul (150,100), vom folosi sintaxa:

Pset (150,100), RGB(255, 0, 0)

Pentru alte culori vom folosi valorile pentru parametri r, g, b din tabelul de mai jos:

Culoare

R

G

B

Negru

Albastru

Verde

Cyan

Rosu

Magenta

Galben

Alb

Pentru parametrii r, g, b se pot folosi atat valori concrete cat si variabile.

Desenarea liniilor intre doua puncte se face cu metoda Line, avand sintaxa urmatoare:

[object].Line [Step](x1, y1) [Step]-(x2, y2),[color],[B][F]

Obiect este optional; daca este omis desenarea se face pe suprafata formularului curent, de care apartine codul.

Step este optional si specifica faptul ca punctul de start are o pozitie relativa fata de punctul dat de proprietatile CurentX si CurentY

(x1, y1) - optional, indica coordonatele punctului de start; daca este omis se vor folosi coordonatele furnizate de proprietatile CurentX si CurentY

Step este optional si specifica faptul ca punctul de sfarsit are o pozitie relativa fata de punctul de start al liniei.

(x2,   y2) - este obligatoriu si reprezinta punctul de sfarsit al liniei.

Color - optional, intreg indicand culoarea RGB a liniei. Daca acest parametru este omis, este folosita proprietatea ForeColor. Se poate folosi functia RGB sau functia QBColor pentru specificarea culorii.

B - optional, daca este inclus cauzeaza desenarea unui dreptunghi avand diagonala (x1, y1) - (x2, y2).

F - optional. Daca B este inclus, optiunea F specifica daca dreptunghiul desenat este plin sau transparent. F nu poate fi folosit fara B. Daca B este folosit fara F, dreptunghiul va fi umplut cu o culoare si un stil dat de proprietatile FillColor si FillStyle. Valoarea implicita pentru FillStyle este transparent.

Iata stilurile de umplere date de proprietatea FillStyle:

- Plin, dreptunghiul este umplut cu culoarea data de proprietatea FillColor

- Transparent(implicit), obiectele grafice apar goale.

- Umplut cu linii orizontale.

- Umplut cu linii verticale.

- Umplut cu linii diagonale ascendente.

- Umplut cu linii diagonale descendente.

- Umplut cu caroiaj.

- Umplut cu caroiaj oblic.

Exemple:

Desenarea unei linii obisnuite:

Line (500, 500)-(2000, 2000)

Desenarea unei linii fara punct de start (linia pleaca din coltul stanga-sus):

Line -(2000, 2000)

Desenarea unei linii rosii:

Line (500, 500)-(2000, 2000), RGB(255,0,0)

Desenarea unui dreptunghi (transparent):

Line (500, 500)-(2000, 2000),,B

Desenarea unui dreptunghi albastru:

Line (500, 500)-(2000, 2000), RGB(0,0,255), B

Desenarea unui dreptunghi umplut cu culoarea verde:

Line (500, 500)-(2000, 2000), RGB(0,255,0),BF

Desenarea unui dreptunghi hasurat:

FillStyle

Line (500, 500)-(2000, 2000), ,B

Desenarea cercurilor se face cu metoda Circle, avand urmatoarea sintaxa:

object.Circle [Step](x, y),radius,[color,start,end, aspect]

Obiect este optional; daca este omis desenarea se face pe suprafata formularului curent, de care apartine codul.

Step este optional si specifica faptul ca centrul cercului are o pozitie relativa fata de punctul dat de proprietatile CurentX si CurentY

(x, y) - obligatoriu, indica coordonatele centrului cercului.

Radius - obligatoriu, este raza cercului; se exprima intotdeauna in unitatile axei OX a sistemului de coordonate(axa orizontala).

Color - optional, intreg indicand culoarea RGB a cercului. Daca acest parametru este omis, este folosita proprietatea ForeColor. Se poate folosi functia RGB sau functia QBColor pentru specificarea culorii.

Start, End - sunt unghiurile exprimate in radiani pentru inceput si sfarsit, atunci cand vrem sa desenam un arc de cerc. Pentru cercul complet, valorile implicite sunt 0 si 2*PI. Ne reamintim ca transformarea unui unghi din grade in radiani se face cu expresia:

alfa(radiani) = alfa(grade)*PI/180

Unghiurile se masoara de la sensul pozitiv al axei OX.

Aspect - reprezinta raportul dintre dimensiunile pe orizontala si verticala; valoarea implicita a acestui parametru este 1, pentru desenarea unui cerc. Daca valoarea difera de 1 vom obtine o elipsa.

Exemple:

Desenarea unui cerc cu raza de 500 unitati:

Circle (2000, 2000), 500

Desenarea unui cerc rosu:

Circle (2000, 2000), 500, RGB(255,0,0)

Desenarea unei elipse verticale (aspect > 1):

Circle (2000, 2000), 500,,,,2

Desenarea unei elipse orizontale (aspect < 1)

Circle (2000, 2000), 500,,,,0.6

Desenarea unei elipse pline:

FillStyle

Circle (2000, 2000), 500,,,,2

Desenarea unui arc de cerc, intre unghiurile de 30 si 60 de grade:

pi = 3.14159265

Circle (2000, 2000), 1000, ,30*pi/180, 60*pi/180

Desenarea unui arc de cerc, intre unghiurile de 30 si 60 de grade, avand capetele unite cu centrul arcului (se pune "-" in fata parametrilor start si end

pi = 3.14159265

Circle (2000, 2000), 1000, ,-30*pi/180, -60*pi/180

Tipuri de linii

Orice inginer stie ca un desen tehnic corect trebuie sa contina pe langa linii continue, si linii intrerupte sau de alte tipuri. De asemenea, liniile pot fi de grosimi diferite. În continuare se vor studia si aceste aspecte.

Grosimea liniilor se stabileste cu proprietatea DrawWidth, care se seteaza inainte de a desena linia respectiva. Valoarea ei ramane neschimbata pana la o noua setare.

Procedura urmatoare deseneaza mai multe linii de grosimi diferite:

Private Sub Command1_Click()

DrawWidth = 1

Line (500, 500)-Step(5000, 0)

DrawWidth = 4

Line (500, 1000)-Step(5000, 0)

DrawWidth = 8

Line (500, 1500)-Step(5000, 0)

End Sub

Rezultatul executiei acestei proceduri se vede in figura 16.4.

Fig. 16.4. Linii de grosimi diferite

 


Observatie importanta!! Pentru ca liniile sa fie desenate pe suprafata formei, trebuie ca proprietatea acesteia AutoRedraw sa aiba valoare True, altfel liniile nu se vor vedea.

Valoarea proprietatii DrawWidth depinde de tipul de scala ales. Cea mai buna metoda de stabilire a acestei valori este prin incercari.

Stilul liniilor se stabileste cu proprietatea DrawStyle, care se seteaza inainte de a trage o linie. Exista mai multe tipuri de linii care se folosesc in desenarea din Visual Basic, dupa cum se poate vedea mai jos:

- Linie continua (se pastreaza in constanta VbSolid

- Linie intrerupta (se pastreaza in constanta VbDash

- Linie punctata (se pastreaza in constanta VbDot

- Linie - punct (se pastreaza in constanta VbDashDot

- Linie - punct - linie (se pastreaza in constanta VbDashDotDot

- Linie invizibila (se pastreaza in constanta VbInvisible

- Linie continua (se pastreaza in constanta VbInsideSolid

Procedura care urmeaza deseneaza cateva stiluri de linii:

Private Sub Command1_Click()

DrawStyle = 0 'Linie continua

Line (500, 300)-Step(5000, 0)

DrawStyle = 1 'Linie intrerupta

Line (500, 600)-Step(5000, 0)

DrawStyle = 2 'Linie punctata

Line (500, 900)-Step(5000, 0)

DrawStyle = 3 'Linie - punct

Line (500, 1200)-Step(5000, 0)

DrawStyle = 6 'Linie solida

Line (500, 1500)-Step(5000, 0)

End Sub

Rezultatul executiei acestei proceduri este prezentat in figura 16.5.

Fig. 16.5. Diferite tipuri de linii

 


În continuare va fi prezentata o mica aplicatie care utilizeaza cunostintele dobandite pana acum in legatura cu desenarea. E vorba de o placa dreptunghiulara care are cate o gaura in cele 4 colturi. Pentru gauri se vor folosi linii de grosimi diferite, iar gaurile din dreapta vor avea culoarea rosie (figura 16.6).

P1

 

P2

 

Fig. 16.6. Desenare in Visual Basic

 


Datele de intrare ale programului sunt punctele P1 si P2 din colturile opuse ale placii. Pentru a calcula centrele cercurilor se folosesc formule simple pe care le vedeti in codul sursa. Deoarece nu s-au facut calcule de scalare, pentru ca desenul sa incapa pe interfata, folositi coordonatele din figura, iar forma sa aiba dimensiunile 9600 x 6000 pixeli.

Pe interfata sunt mai multe obiecte, programul deseneaza numai placa si cele 4 cercuri, restul le puneti Dvs. in faza de proiectare. Toate sunt obiecte cunoscute (butoane de comanda, casete de text, etichete) in afara de obiectul Line cu care am desenat axele de coordonate si reprezentat punctele P1 si P2.

Încercati sa faceti acest program sa "mearga", eventual sa-l completati si cu alte elemente grafice cum ar fi axele gaurilor, un patrat in centrul placii etc.

Iata codul sursa a acestui program:

Private Sub cmdExecuta_Click()

Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double

Dim xc1 As Double, yc1 As Double, xc2 As Double, yc2 As Double

Dim a As Double, b As Double, r As Double, deltaX As Double, deltaY As Double

'Citim coordonatele

x1 = Val(txtX1)

y1 = Val(txtY1)

x2 = Val(txtX2)

y2 = Val(txtY2)

'Calculam dimensiunile placii si coordonatele cercurilor

a = Abs(x1 - x2)

b = Abs(y1 - y2)

r = a / 20

deltaX = a - (a / 20 + 2 * r) '2*a/40 = a/20

deltaY = b - (a / 20 + 2 * r) 'Distanta dintre centrele cercurilor

xc1 = x1 + a / 40 + r: yc1 = y1 + a / 40 + r 'Centrul cercului stinga-sus

xc2 = x2 - a / 40 - r: yc2 = y2 - a / 40 - r 'Centrul cercului dreapta-jos

'Desenam placa si gaurile

Form1.Cls 'Sterg desenul de pe forma

Form1.Line (x1, y1)-Step(a, 0)

Form1.Line (x1, y1)-Step(0, b)

Form1.Line (x2, y2)-Step(0, -b)

Form1.Line (x2, y2)-Step(-a, 0)

DrawWidth = 2 'Stabilesc grosimea liniei

Form1.Circle (xc1, yc1), r 'Desenez cercul din stinga-sus

DrawWidth = 1: ForeColor = vbRed 'Revin la grosimea initiala si setez culoarea rosie

Form1.Circle (xc2, yc2), r 'Desenez cercul din dreapta-jos

Form1.Circle (xc1 + deltaX, yc1), r 'Desenez cercul din dreapta-sus

ForeColor = vbBlack 'Revin la culoarea neagra

Form1.Circle (xc1, yc1 + deltaY), r 'Desenez cercul din stinga-jos

'PrintForm

End Sub

Private Sub cmdExit_Click()

End

End Sub

Din codul sursa puteti vedea cum se deseneaza o linie, un cerc, cum se stabilesc grosimile si culoarea obiectelor desenate. Poate fi un punct de plecare pentru aplicatii mai indraznete.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Comentarii literare

ALEXANDRU LAPUSNEANUL COMENTARIUL NUVELEI
Amintiri din copilarie de Ion Creanga comentariu
Baltagul - Mihail Sadoveanu - comentariu
BASMUL POPULAR PRASLEA CEL VOINIC SI MERELE DE AUR - comentariu

Personaje din literatura

Baltagul – caracterizarea personajelor
Caracterizare Alexandru Lapusneanul
Caracterizarea lui Gavilescu
Caracterizarea personajelor negative din basmul

Tehnica si mecanica

Cuplaje - definitii. notatii. exemple. repere istorice.
Actionare macara
Reprezentarea si cotarea filetelor

Economie

Criza financiara forteaza grupurile din industria siderurgica sa-si reduca productia si sa amane investitii
Metode de evaluare bazate pe venituri (metode de evaluare financiare)
Indicatori Macroeconomici

Geografie

Turismul pe terra
Vulcanii Și mediul
Padurile pe terra si industrializarea lemnului

NORTON COMMANDER
Instructiunile limbajului Visual Basic
Notiunea de algoritm. Analiza algoritmilor
Reprezentarea numerelor zecimale in virgula fixa
Sistemul de operare Windows XP
Instruirea asistata de calculator. E-Learning si cursuri On-Line
Concepte de baza ale sistemului expert - Definitii ale sistemului expert
TERMENI UZUALI IN INFORMATICA

Termeni si conditii
Contact
Creeaza si tu