Linie BOOLPentru punctul POINT
Desenează o linie cu un stilou încărcat în contextul dispozitivului, de la focalizare la un punct transmis funcției ca parametru.
Imagini bitmap
Imaginile bitmap reprezintă o parte foarte importantă a Windows. Când se stochează bitmap-uri într-un fișier separat, extensia BMP este de obicei folosită (acesta este singurul format raster care este direct suportat de Windows). Imaginile bitmap pot fi stocate în resurse. Bitmapurile sunt folosite mai des decât toate celelalte resurse. Acest lucru se datorează prezenței unui sprijin extrem de puternic pentru aceștia. În Windows, multe lucruri care pot fi desenate cu ușurință programabil sunt afișate cu ajutorul imaginilor bitmap pregătite. De exemplu, butoanele în stare presată și eliberată, cadre pentru ferestre întregi. Deoarece calculatoarele dispun acum de discuri grele mari, alegerea dintre desenarea programului unui obiect și o imagine finită este deseori rezolvată în mod unic în favoarea acestuia din urmă.
Crearea de fișiere bitmaps
Afișarea unei imagini bitmap pe ecran
Atunci când un bitmap este plasat în resurse, acesta poate fi afișat. În primul rând, trebuie să creați un obiect de tipul CBitmap și să utilizați funcția LoadBitmap () pentru a încărca imaginea bit din resurse în ea. Funcția prototip:
Parametrul specifică identificatorul de șir al resursei. După încărcarea bitmap-ului, acesta trebuie să fie trimis în zona client a ferestrei. Pentru a face acest lucru, manipulatorul WM_PAINT trebuie să conțină aproximativ acest cod (presupunând că bitmap-ul este încărcat în obiectul backgroundBitmap):
Mai întâi, sunt declarate două contexte ale dispozitivului. Prima este asociată cu fereastra curentă. Al doilea nu este inițializat și este destinat zonei de memorie în care va fi stocată imaginea. Apoi, utilizând funcția CreateCompatibleDC (...). Acest context este declarat compatibil cu contextul ferestrei. Funcția are un prototip:
Zona de memorie este utilizată pentru a afișa imaginea pe ecran. Înainte de a afișa imaginea, imaginea trebuie selectată în contextul dispozitivului asociat cu zona de memorie utilizând funcția SelectObject (...). Folosim versiunea sa cu prototipul:
Parametrul pBmp este un pointer pentru obiectul bitmap. BitBlt (...) este utilizat pentru a afișa imaginea pe ecran. care copiază o imagine din contextul sursă al dispozitivului în contextul asociat funcției care apelează funcția. Funcția prototip este:
Setarea sistemului de coordonate
Funcții standard de bază MFC pentru configurarea sistemelor de coordonate
MFC are funcții integrate pentru configurarea sistemelor de coordonate hardware și logice. Există, de asemenea, funcții pentru comutarea de la unul la altul. Sarcina programatorului este de a determina când și ce sistem de coordonate să folosească.
Reguli de bază pentru lucrul cu sistemele de coordonate:
- Toți parametrii au trecut la metodele CDC. Sunt coordonate logice.
- Toți parametrii transmiși la metodele CWnd sunt coordonatele hardware.
- Valorile stocate pentru o lungă perioadă de timp ar trebui să utilizeze coordonate logice.
Luați în considerare funcțiile de lucru cu sistemele de coordonate.
Funcția virtual int SetMapMode (int nMapMode) stabilește direcțiile axelor și definește unitățile logice. Valorile posibile pentru parametrul nMapMode sunt enumerate în tabel:
O unitate logică este egală cu un pixel, axa x este îndreptată spre dreapta, axa y este în jos. Modul este setat implicit.
O unitate logică este de 0,001 inci, axa x este îndreptată spre dreapta, axa y este în sus.
O unitate logică este de 0,01 milimetri, axa x este îndreptată spre dreapta, axa y este în sus.
O unitate logică este de 0,01 inci, axa x este îndreptată spre dreapta, axa y este în sus.
O unitate logică este de 0,1 milimetri, axa x este îndreptată spre dreapta, axa y este în sus.
Modul vă permite să setați (utilizând funcțiile SetWindowExt și SetViewportExt) dimensiunea (separat pentru fiecare axă), instrucțiunile și originea
Modul vă permite să setați (cu ajutorul funcțiilor SeWindowExt și SetViewportExt) dimensiunea axelor, direcțiile acestora și originea, unitatea axei x este egală cu unitatea axei y.
O unitate logică, twips, este de 1/20 de puncte sau 1/1440 inch, axa x este îndreptată spre dreapta, axa y este în sus.
Funcții pentru deplasarea centrelor de sisteme de coordonate: CPoint virtual SetViewportOrg (Punct CPoint) și CPoint SetWindowOrg (Punct CPoint). Primul schimbă centrul coordonatelor hardware, iar al doilea schimbă coordonatele logice la punctul transmis ca parametru. Ambele funcții returnează coordonatele centrului anterior.
Functiile CSize virtuale SetViewportExt (dimensiunea CSize) si CSize virtuale SetWindowExt (dimensiunea CSize) sunt folosite pentru a specifica unitatile de masura. Prima funcție stabilește unitățile de măsură ale sistemului de coordonate hardware, al doilea - cel logic.
Pentru a trece de la hardware la coordonate logice, utilizați funcția void DPtoLP (LPPOINT lpPoints, int nCount = 1) const. și pentru tranziția de la logic la hardware - void LPtoDP (LPPOINT lpPoints, int nCount = 1) const. Argumentele ambelor funcții sunt un pointer la o matrice cu punctele care trebuie convertite și dimensiunea acestui matrice.
Aceste funcții sunt universale, potrivite pentru utilizarea în sarcini în care nu sunt necesare transformări complexe ale sistemului de coordonate. Pentru a implementa transformări complexe pe mai multe niveluri, se recomandă introducerea funcțiilor de transformare proprii ale sistemului de coordonate.