Vizualizarea controalelor formularelor ferestrelor

Metoda OnPaint a clasei de bază Control nu implementează nicio funcție de desen. Se apelează doar delegații evenimentului înregistrați la evenimentul Paint. Când se utilizează funcția OnPaint, trebuie să apelați metoda OnPaint a clasei de bază, astfel încât delegații înregistrați să primească evenimentul Paint. Cu toate acestea, controalele care își atrag suprafețele nu trebuie să apeleze funcția OnPaint a clasei de bază, deoarece acest lucru va face ca imaginea să clipească. Exemplu de redefinire a unui eveniment Cum să: Crearea unui control care arată progresul sub formă de Windows Forms este inclus în secțiunea OnPaint.

Nu apelați OnPaint direct de la control. În schimb, apelați metoda Invalidate (moștenită de la Control) sau altă metodă care solicită Invalidați. La rândul său, metoda Invalidate rulează OnPaint. Metoda Invalidate este supraîncărcată și, în funcție de argumentele utilizate pentru Invalidate e. Controlul a redus parțial sau complet suprafața ecranului.

Clasa bazei de control definește o altă metodă utilă pentru desen: metoda OnPaintBackground.

OnPaintBackground atrage fundal (și, prin urmare, forma) și ferestrele sunt garantate pentru a face rapid, în timp ce OnPaint atrage părți și poate rula mai lent, deoarece solicitările individuale pentru desen combinate într-un singur eveniment Paint. care se suprapune peste toate zonele care trebuie redeschise. Este posibil să trebuiască să apelați OnPaintBackground. de exemplu, dacă doriți să desenați un fundal gradient umbrit pentru control.

Deși sistemul OnPaintBackground are un sistem de notare similar cu sistemul de notare a evenimentelor, el are aceleași argumente ca și metoda OnPaint. OnPaintBackground nu este o metodă adevărată a evenimentului. Evenimentul PaintBackground nu există și OnPaintBackground nu apelează delegații evenimentului. Când înlocuiți metoda OnPaintBackground, clasa derivată nu este obligată să apeleze metoda OnPaintBackground a clasei sale de bază.

Clasa Graphics oferă metode pentru desen diferite forme, cum ar fi cercuri, triunghiuri, arce și elipse, precum și metode pentru afișarea textului. Numele spațiului System.Drawing și subspațiile conțin clase care încapsulează elementele grafice, cum ar fi forme (cercuri, dreptunghiuri, arce etc.), culori, fonturi, perii etc. Pentru mai multe informații despre GDI (interfața), consultați Utilizarea cursurilor de gestionare grafică. Elementele de bază ale interfeței GDI (interfață) sunt de asemenea enumerate în Ghidul practic. Creați un control care arată progresul în formularul Windows.

Proprietatea ClientRectangle de control stabilește o zonă dreptunghiulară, care este disponibil pentru controlul pe ecranul utilizatorului, în timp ce ClipRectangle PaintEventArgs proprietate specifică zona care este, de fapt desenat. (Rețineți că desenul se face în metoda evenimentului PaintEventArgs, care primește o instanță a lui Paint ca argument). Controlul poate necesita redarea unei părți din zona disponibilă, ca în cazul în care se modifică o mică parte a imaginii. În această situație, dezvoltatorul de control trebuie să calculeze dreptunghiul real în care va fi realizat desenul și să îl transfere în Invalidare. Versiuni incorecte ale Invalidate. primirea dreptunghi sau regiune ca argument, argumentul este utilizat pentru a crea proprietăți ClipRectangle PaintEventArgs.

Următorul fragment de cod arată modul în care comanda FlashTrackBar personalizată calculează zona dreptunghiulară în care va fi realizat desenul. Clientul variabil desemnează proprietatea ClipRectangle. Pentru un exemplu complet, consultați Cum se face: Practică. Creați un control care arată progresul în formularul Windows.

Articole similare