Ca vopsea normală pe panoul

Așa cum trage în mod normal, pe panoul?

Bună ziua tuturor!
Este necesar să se elaboreze o imagine a panoului de resurse.
# XA0; privat
# XA0; # XA0;
# XA0; # XA0; PanelDC, PD: HDC;
# XA0; # XA0; bmp: TBitMap;

Procedura TForm1.FormCreate (Expeditor: TObject);
începe
Bmp: = TBitMap.Create;
Bmp.LoadFromResourceName (HInstance, "PanelImage");
se încheie;

Procedura TForm1.FormPaint (Expeditor: TObject);
începe

DeleteDC (PanelDC);
DeleteDC (PD);
se încheie;
Deci, dacă eliminați linia Label1.Caption. ea nu trage nimic. O etichetă cu această linie afișează un mod continuu
schimbarea numerelor.
Ajuta în mod normal, trage pe panou.

> [1] clickmaker
și lucrurile sunt acolo.


> Tytus # XA0; (09.08.06 12:06) [2]

nu a observat că vopseaua în Form.OnPaint. Este greșit.
Tu practic doar trage de pe panoul sau costum paintbox, și, probabil, imagini?

[3]> clickmaker
butonul Aici au aruncat, iar acum totul este bine desenat.
Dar aceasta nu este o opțiune.


> Tytus # XA0; (09.08.06 13:28) [4]

Nu înțeleg. De ce te acoperi dacă dețineți controale pe panoul nu sunt necesare? poate vopsea și un chat pe formular și paintbox

Creați succesorul dvs. din TPanel, chiar mai bine TCustomPanel.
Suprapunerea Paint protejate; suprascrie;
TTam risy ceea ce ai nevoie.
şi acest lucru

Face doar o singură dată - crearea și ștergerea obiectelor.

Apoi, este posibil să se redeclare o proprietate pânză, caz în care GetDC și ReleaseDC devin inutile

Pe scurt, utilizarea panoului pentru a trage un pic de sânge:


tip
# XA0; TMyPanel = clasă (TPanel)
# XA0; publică
# XA0; # XA0; Canvas proprietate;
# XA0; # XA0; Procedura de vopsea; suprascrie;
# XA0; end;

# XA0; TForm1 = clasă (TForm) # XA0;
# XA0;.
# XA0; end;


punerea în aplicare
.
Procedura TMyPanel.Paint;
începe
# XA0; moștenit;
# XA0; dacă Self.Tag = 1000 atunci
# XA0; începe
# XA0; # XA0; // Aici vopsea pe pânză
# XA0; end;
se încheie;

Cu toate acestea, utilizarea paintbox tot mai ușor.