Documente Academic
Documente Profesional
Documente Cultură
Lucrarea de Laborator 6
Lucrarea de Laborator 6
Lucrarea de laborator 6.
Visual C++6.0 – MFC
Un context dispozitiv reprezintă suprafaţa pe care se desenează toate punctele, liniile, pătratele,
fonturile, culorile. Cuvântul “dispozitiv” din context dispozitiv înseamnă că se poate desena pe ecran, la
imprimantă, pe un plotter fără a cunoaşte prea multe detalii despre ce dispozitiv se foloseşte sau ce
marcă sau model este acesta.
Există un context dispozitiv standard brut, şi există contexte dispozitiv pentru situaţii speciale şi
operaţii particulare. MFC oferă încapsulări ale contextelor dispozitiv care simplifică interacţiunea cu
obiectele GDI aflate dedesubt. Clasa care încapsulează contextul dispozitiv standard brut este CDC.
Această clasă conţine un număr mare de funcţii de desenare, de mapare de coordonate şi de decupare
pentru implementarea reprezentărilor grafice. Toate celelalte clase de context dispozitiv, mai
specializate, sunt bazate pe această clasă şi o extind.
Capacitatea clasei CDC de a se ataşa şi a desena într-un context dispozitiv poate fi ilustrată
printr-un program simplu. Fiecare fereastră are asociat un context dispozitiv care acoperă întreaga
fereastră; nu face excepţie nici fereastra suprafeţei de lucru, care se întinde pe întregul ecran.
Aplicaţia următoare acaparează un context dispozitiv şi îl foloseşte pentru desenare.
Exerciţiu 1. Creaţi o aplicaţie de tip SDI. Adăugaţi un buton cu numele Trasare (ID DrawIt)
resursei Edit de meniu din cadrul proiectului. Cu ajutorul ClassWizard trataţi mesajul generat de
apăsarea butonului, într-o funcţie OnDrawIt() situată în clasa CSDIView. Completaţi corpul
funcţiei cu următorul cod:
void CSDIView::OnDrawIt() {
//Obtinerea unui pointer la fereastra suprafatei de lucru
CWnd* pDeskTop=GetDesktopWindow();
//Obtinerea unui pointer la contextul dispozitiv al //acesteia
CDC* pDC=pDeskTop->GetWindowDC();
for(int i=0;i<300;i++)
for(int j=0;j<300;j++)
//Desenarea fiecarui pixel cu o alta culoare
pDC->SetPixel(i,j,i*j);
//Eliberarea contextului dispozitiv
pDeskTop->ReleaseDC(pDC);
PROGRAMAREA ORIENTATĂ PE OBIECTE - Laborator
Un context dispozitiv de memorie este un context dispozitiv care nu are asociat nici un
dispozitiv. Aceste contexte dispozitiv se folosesc de regulă împreună cu un context dispozitiv obişnuit
pentru copierea şi lipirea unor zone de ecran. Este posibilă crearea unui context dispozitiv de memorie
compatibil cu un dispozitiv de afişare. Apoi se pot copia în memorie imaginile care nu mai sunt afişate,
aducându-le înapoi în contextul dispozitiv de afişare atunci când este nevoie.
Exerciţiu 2. Creaţi o aplicaţie de tip SDI. Adăugaţi un buton cu numele DrawIt resursei de
meniu din cadrul proiectului. Cu ajutorul ClassWizard trataţi mesajul generat de apăsarea butonului
într-o funcţie Draw() situată în clasa CSDIView. Completaţi corpul funcţiei cu următorul cod:
void CSDIView::OnDrawIt()
{
//Construim un DC client pentru fereastra dialog
CClientDC clientDC(this);
//Creem un context dispozitiv de memorie care să fie
//compatibil cu un context dispozitiv de pe ecran
CDC memDC;
memDC.CreateCompatibleDC(&clientDC);
//Determinam zona client
CRect rcClient;
GetClientRect(&rcClient);
//Creem un bitmap compatibil cu atributele contextului
//dispozitiv de pe ecran
CBitmap memBitmap;
memBitmap.CreateCompatibleBitmap(&clientDC,rcClient.Width(), rcClient.Height());
//Îl selectăm în cadrul contextului dispozitiv de memorie
memDC.SelectObject(&memBitmap);
PROGRAMAREA ORIENTATĂ PE OBIECTE - Laborator
Compilaţi şi executaţi .