Rezultatul programului poate fi văzut în Fig.
În acest exemplu, la evenimentul onPaint (când trebuie să redrafli formularul), sunt redate alternativ linii de diferite stiluri. Pentru a face acest lucru, selectați mai întâi stilul dorit (de exemplu, Canvas.Pen.Style:=psSolid selectează stilul de linie solidă).Apoi creionul se deplasează la punctul de start al liniei canvas.MoveTo (x, y). Metoda MoveTo mută creionul în poziția specificată ca parametri x și y. Când se mișcă, nu există nici o pictură pe pânză, x și y nu sunt centimetri și nu milimetri, ci numărul de pixeli (numărul de puncte de ecran).
Coordonata lui x merge spre stânga. Aceasta înseamnă că partea stângă a ferestrei este egală cu poziția zero x, iar partea dreaptă a ferestrei este valoarea maximă. Dar aceasta nu înseamnă că x nu poate fi negativă sau mai mare decât maximul. Puteți specifica cu ușurință orice valoare fără probleme, doar că trebuie să țineți cont de faptul că o parte a liniei poate merge dincolo de fereastră.
Coordonata y contează din partea de sus. Limita superioară a ferestrei este punctul zero al lui y. În acest caz, titlul ferestrei (cu numele formularului și butoanele de sistem) nu este inclus în zona client a ferestrei.
Acum trebuie să trasăm o linie utilizând metoda LineTo (x, y). Coordonatele finale ale liniei sunt transferate ca parametri. Segmentul va fi extras pornind de la poziția curentă a creionului, unde am mutat metoda Metoda și coordonatele specificate la apelul metodei LineTo.
După desenarea primei linii, selectați următorul stil și treceți la o poziție de 20 de pixeli sub linia deja trasată. După aceea trageți următoarea linie.
Acum adăugați programului nostru capacitatea de a schimba culoarea creionului. Pentru a face acest lucru, vom plasa butonul cu inscripția "Schimbați culoarea" și componenta coiorDialog din fila Dialoguri din formular. Componenta coiorDialog este proiectată să afișeze dialogul de selecție a culorilor standard. Pe formular, va arata ca un pătrat simplu cu o pictogramă și nu va fi vizibil la pornire.
Pentru eveniment # 111; butoanele nclick vom scrie următorul cod:
dacă ColorDialogl.Execute apoi
Prima linie de cod afișează fereastra de selectare a culorilor (ColorDialog1, Execute). Dacă utilizatorul a ales o culoare și nu a făcut clic pe OK (a anulat clicul sau a făcut clic pe butonul din antet), fereastra returnează false. Prin urmare, verificăm dacă rezultatul afișării ferestrei este adevărat, apoi schimbați culoarea:
dacă ColorDialogl.Execute apoi schimba culoarea pânzei
Aș dori să vă reamintesc că, în mod implicit, constructul if verifică dacă codul specificat este adevărat, dacă nu se specifică altfel. În legătură cu aceasta, aceeași construcție ar putea fi scrisă după cum urmează:
dacă ColorDialogl.Execute = true atunci schimbați culoarea pânzei
Rezultatul culorii selectate este scris în proprietatea Color a componentei ColorDialogl. Aceasta este ceea ce atribuim culorii creionului canvas.Pen.color. După aceea, trebuie doar să redrafli imaginea. Pentru aceasta, procedura pentru manipularea evenimentului OnPaint este chemată explicit. La noi agentul de ieșire este numit FormPaint și este necesar să-l provoace.
Puteți rula programul și puteți verifica rezultatul modificării culorilor liniei.
Acum, să adăugăm posibilitatea de a alege grosimea liniei. Pentru aceasta, instalați componenta UpDown din fila Win32. Pentru eveniment # 111; clic pe această componentă, scrieți următorul cod:
procedura TFormi.UpDownlClick (expeditor: TObject; buton: TUDBtnType);
Componenta upDown constă din două butoane. Butonul superior mărește contorul intern. Jos - reduce. Valoarea actuală a contorului poate fi citită în proprietatea Poziție. Această valoare este atribuită proprietății la grosime a creionului Canvas. Pen. Lățime.
După aceasta, se numește metoda formei principale de Repaint. Această metodă generează un eveniment care trebuie să redreseze conținutul ferestrei. Aceasta înseamnă că handlerul de evenimente onPaint va fi automat apelat. Rezultatul este același lucru cu apelarea directă a handlerului, așa cum sa făcut după schimbarea culorii. Dar această metodă este considerată mai corectă.
TIP. Dacă vorbim despre ce mod este mai corect, atunci ambii lucrează fără probleme, doar a doua metodă este mai estetică și frumoasă, deși necesită cheltuieli suplimentare pentru a genera un mesaj despre necesitatea de a redrafli fereastra.