Extras din laborator
In Microsoft Visual Studio cream C++ MFC Project , cu un sindur document.
Aici vom incerca sa interpretam cu ajutorul graficii 2D, grafica 3D vizuala.
In Solution Explorer deschidem Source Files si alegem (NumeProiect)View.cpp, in cazul nostru se numeste GrapgLab2View.cpp. Introducem codul de mai jos in acest fisier:
COLORREF MyColor(int k)
{
return RGB( (k%2) ? 255-40*(k+1): 255,
(k%3) ? 255-60*(k+1): 255,
(k%5) ? 200 : 40*(k+1) );
}
void CGraphLab2View::OnDraw(CDC* pDC)
{
CGraphLab2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
static float diagr[nf]={ 30.0, 80.0, 87.5, 10.5, 54.0 };
static char denum[mf][20]={"alfa","beta","gama","delta","epsilon"};
int k;
int ky=4;
char nume[10];
//cream penite , pensule si fonduri
CPen pAxe(PS_SOLID,1,RGB(0,0,255)); //penita cu culoarea albastra
CBrush brUmplere (RGB(255,0,255));
CBrush brGalben (RGB(255,255,0)); //pensula cu culoarea galbena
CFont fArial;
fArial.CreatePointFont(100,CString("Arial"),pDC);
//selectam penita pensula si fontul curent
CPen *pOldPen = pDC->SelectObject(&pAxe);
CBrush *pOldBrush = pDC->SelectObject(&brUmplere);
CFont *pOldFont = pDC->SelectObject(&fArial);
//stabilim zona de lucru
CRect rcClient;
GetClientRect(&rcClient);
//inaltimea si latimea
int maxx = rcClient.Width();
int maxy = rcClient.Height();
//stabilim originea sistemului de coordonate si dimensiunea sist. de vizualizare
pDC->SetViewportOrg(0,0);
pDC->SetViewportExt(maxx,maxy);
//trasam cu linie subtire marginea noastra a zonei de desanare
pDC->SelectStockObject(NULL_BRUSH);
pDC->Rectangle(0,0,maxx,maxy);
//desenam antetul figurii
pDC->SetTextColor(RGB(128,0,0));
//Aliniem textul
pDC->SetTextAlign(TA_TOP+TA_CENTER);
pDC->TextOut(maxx/2,5,CString("Diagrama 3D"));
//desenam axele de coordonate
pDC->MoveTo(40,maxy-40);
pDC->LineTo(40,50);
pDC->LineTo(37,56);
pDC->MoveTo(40,50);
pDC->LineTo(42,56);
//gradarea axei de coordonate
pDC->SetTextAlign(TA_LEFT+TA_BASELINE);
for (k=0;maxy-40-k*ky>=50;k+=10)
{
_itoa_s(k,nume,10);
pDC->TextOutW(10,maxy-40-k*ky+5,CString(nume),strlen(nume));
pDC->MoveTo(40-3,maxy-40-k*ky);
pDC->LineTo(40+3,maxy-40-k*ky);
}
//desenarea diagramnei cu indici absoluti(diagrama dreptunghiulara)
Preview document
Conținut arhivă zip
- Microsoft Visual Studio C++ MFC Project.docx