Lucrul cu tcanvas în delphi

Posturi active 4 Mulțumit de 1 dată în 1 post

Lucrul cu TCanvas în Delphi

Pentru a crea un simplu efecte 2D în Delphi folosesc de obicei TCanvas.
TCanvas - aceasta este panza. Pentru a desena pe ea. Este posibil să se afișeze o imagine, puteți desena programatic primitivelor grafice pe ea, schimba culoarea de orice pixel de pe coordonatele sale. Dacă nu învață să lucreze cu grafica primitive, vă formoshlopami va rămâne!
muncă EXEMPLU cu TCanvas. Desenați un cerc verde:
Provocarea: pentru a aduce cercul verde în fereastra programului. Deschideți Delphi. Crearea unui proiect nou. Scrierea în forma onCreate:

de 20,20 - coordonatele colțul din stânga sus al unui pătrat invizibil, cerc înscris în Koror, 100100 - coordonatele colțul din dreapta jos.
Pornește programul. nimic nu sa întâmplat. De ce? Deoarece onCreate are loc înainte de a se afișează forma. Ne mutăm linia de cod în forma OnShow. Oh! Nicrom este, de asemenea, nu funcționează! Mutați linia în formă onClick. Rulați programul și faceți clic pe mouse-ul pe ea. A existat un cerc negru. și totul pare să fie bine. DAR. Acum, încercați să mutați forma de apariții în afara ecranului, sau petrece o altă fereastră de pe partea de sus a gamei noastre. Sau doar să se rostogolească \ implementa programul. cerc șters
Și ce se întâmplă? Doar programul pererisovyvat fundal. Acest lucru se întâmplă după primirea mesajului WM_PAINT a sistemului de operare. Apoi, executați handler OnPaint. Din punctul de a încerca să se mute acest cod în formă OnPaint. WOW. Toate plug. Cercul nu este șters mai mult.
DAR. El a făcut inutil de mai multe ori pe secundă. Unul și același lucru. Aici începe optimizarea.
Introduceți sub formă de TImage componente, a pus în Align alClient. Această componentă ne întinde peste fereastra. Acum, scrie în forma onCreate:

Am adăugat pe image1 stâng, pentru că acum vom lucra cu panza sale. Run, totul funcționează în onCreate. Ea a lucrat pentru că TImage are propriul bitmap și arată întotdeauna, nu-l curățare. Cu toate acestea, acum un fundal alb. Apropo, nu cerc verde. Scrierea în onCreate ca aceasta:

Perie - Această perie. Am întrebat-o culoare verde. Run. Acesta a lăsat un contur negru, ca Pen (pen) - este negru. Atribuit:

A. Toate clar
muncă EXEMPLU cu TCanvas. circulație:
Obiectiv: Pentru a face un cerc verde pluti încet în lateral. Crearea unei variabile globale tipuri X1 întreg = 0. inserați în forma TTimer. Am pus intervalul la 55. Scrierea în onTimer

Run. Uhh. Cercul nostru începe cârnați Pentru a nu a fost ca acest lucru, este necesar pentru a curăța fundal. acest lucru se face după cum urmează. OnTimer scrie în acest fel:

Ie schimba culoarea perie de la alb, apel FillRect (ClientRect) - pentru a umple într-un dreptunghi. ClientRect - doar o cutie dreptunghi. Acum, pânza albă. Schimbarea culorii înapoi la verde, și desena un cerc. Totul funcționează. Cercul merge pe formular.

Notă:
Formularul de fundal încă redesenat, în ciuda faptului că nu este vizibil. Uneori, din această cifră poate pâlpâi. Pentru a evita acest lucru, trebuie să adăugați următorul formular de intrare onCreate: