Visual Studio, un desen simplu pe un formular schiță grafică și afișare

Visual Studio, un desen simplu pe un formular schiță grafică și afișare

Blogul are deja un număr de note, care arată de lucru cu panza forma grafica in Visual C ++ (ori. Două). Scopul acestui exemplu - pentru a arăta modul în care același cod și software proiectat pentru a aduce desen mai întâi în fereastra de formă și apoi doar pe partea exterioară a ecranului ferestrei. Face această ultimă metodă permite GetDC de Windows API, primind contextul dispozitivului grafic.

1. În pavilion definit forma de clasă care indică dacă necesitatea de a redesena imaginea:

2. Este inițializat în metoda de încărcare a formularului (ca necesitatea de a face atunci când încărcarea pentru prima dată):

3. Toate desen se face într-o formă de vopsea metodă (excepții de la această regulă un pic):

4. Unele forme de evenimente vor trebui să inițieze un vopsi obligatoriu, de exemplu, atunci când utilizatorul a terminat redimensionarea ferestrei (eveniment SizeChanged):

5. Transferul la tragerea la sorți noastră un alt context grafic (cum ar fi contextul grafic pentru Windows afișare), puteți desena același program, „într-un alt loc“, de exemplu, pe partea de sus a tuturor ferestrelor sau sub acestea.

Arătăm ca un exemplu interceptarea contextului grafic al ecranului principal (la redimensionarea ferestrei de forma imaginii noastre va redesena fereastra de formă, pornind de la colțul din stânga sus al ecranului). Soluția funcționează numai pentru Windows.

5.1. Zainkludit la începutul .h formă de fișier:

5.2. Conectarea la proiectul de standard user32 Windows bibliotecă. Pentru a face acest lucru, mergeți la meniul Project, Project Properties, deschideți lista de pe linker stângă, apoi Enter, și să se înregistreze în valoarea „Dependențe suplimentare“

5.3. Verificați dacă au fost conectate la spațiul de nume de proiect

5.4. Metoda de forma vopsea se va schimba, pentru că înainte de a apela Desenați va obține un context de afișare grafică:

Desenul este în continuare depinde de poziția ferestrei aplicației, dar ar putea în schimb this-> ClientSize încercați să utilizați dimensiunea ecranului.