Forum » Programiranje » mfc krogi
mfc krogi
losnah ::
rad bi narisal tri kroge razlicnih barv. Najprej skreiaram Cpen, ga izberem in narisem krog. Potem bi rad spremenu barvo Cpen-u in narisu nov krog. Kako?
CPaintDC dc (this);
CPen pen;
pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));
CPen* pOldPen = dc.SelectObject (&pen);
dc.Ellipse(0,0,100,100);
pen.CreatePen(PS_SOLID, 2, RGB(0,255,0));
CPen* pOldPen = dc.SelectObject (&pen);
dc.Ellipse(0,100,100,200);
.
.
.
Nekak bi mogu Pen deselektirat al pa ...
CPaintDC dc (this);
CPen pen;
pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));
CPen* pOldPen = dc.SelectObject (&pen);
dc.Ellipse(0,0,100,100);
pen.CreatePen(PS_SOLID, 2, RGB(0,255,0));
CPen* pOldPen = dc.SelectObject (&pen);
dc.Ellipse(0,100,100,200);
.
.
.
Nekak bi mogu Pen deselektirat al pa ...
noraguta ::
.. ce vse objekte katere mislis izrisvat drzis v neki srtukturi.kjer imas doloceno kater pen uporabljas , kater lik izrisujes dimenzije lika. pozicija etc... . naredis iz tega tabelo. in pobises vse ter zrises znova.
noraguta ::
mnja kode je kar nekaj.
http://www-h.eng.cam.ac.uk/help/tpl/lan...
http://isg.cs.tcd.ie/cosulliv/2BA3/note...
bi ti moralo pomagati pri konceptu. struktura je ze narejena ti samo v draw funkcije vnesi izris z parametri ki ti ustrezajo.
ce se nimas velo narejeno, lahko poskusiz tudi z wxWindows kniznico. Zelo podobna MFC, le da je prenosljiva prakticno na vsako platformo.
http://www-h.eng.cam.ac.uk/help/tpl/lan...
http://isg.cs.tcd.ie/cosulliv/2BA3/note...
bi ti moralo pomagati pri konceptu. struktura je ze narejena ti samo v draw funkcije vnesi izris z parametri ki ti ustrezajo.
ce se nimas velo narejeno, lahko poskusiz tudi z wxWindows kniznico. Zelo podobna MFC, le da je prenosljiva prakticno na vsako platformo.
d-mon ::
Cist simpl. Naredis 3 CPen-e, razlicnih barv.
Tako se tudi dela.
Ce bi zelel imeti samo eno spremenljivko, ti povem iz lastnih izkusenj, da bo kode na koncu vec kot tele.
Rabis uporabljat Attach in Detach za CPen, kar pa je prevec.
Seveda se to, da ne bi deklariral vsake barve posebej da resit drugace. Uporabljas Win32 brez MFC ali se najbolje GDI+ ali DirectX.
CPen penRed(PS_SOLID, 2, RGB(255,0,0));
CPen penGreen(PS_SOLID, 2, RGB(0,255,0));
CPen penBlue(PS_SOLID, 2, RGB(0,0,255));
CPen* pOldPen = pDC->SelectObject (&penRed);
pDC->Ellipse(0,0,100,100);
pDC->SelectObject (&penGreen);
pDC->Ellipse(0,100,100,200);
pDC->SelectObject (&penBlue);
pDC->Ellipse(0,200,100,300);
pDC->SelectObject (&pOldPen);
Tako se tudi dela.
Ce bi zelel imeti samo eno spremenljivko, ti povem iz lastnih izkusenj, da bo kode na koncu vec kot tele.
Rabis uporabljat Attach in Detach za CPen, kar pa je prevec.
Seveda se to, da ne bi deklariral vsake barve posebej da resit drugace. Uporabljas Win32 brez MFC ali se najbolje GDI+ ali DirectX.
CPen penRed(PS_SOLID, 2, RGB(255,0,0));
CPen penGreen(PS_SOLID, 2, RGB(0,255,0));
CPen penBlue(PS_SOLID, 2, RGB(0,0,255));
CPen* pOldPen = pDC->SelectObject (&penRed);
pDC->Ellipse(0,0,100,100);
pDC->SelectObject (&penGreen);
pDC->Ellipse(0,100,100,200);
pDC->SelectObject (&penBlue);
pDC->Ellipse(0,200,100,300);
pDC->SelectObject (&pOldPen);
[D-mon]
d-mon ::
Ta stavek naredi to, da pospravis za sabo.
Ko uporabljas DC je priporocljivo vse skupaj vrniti nazaj v staro stanje.
Tako, na zacetku, ko (recimo) zamenjam default pen z mojim rdecim, funkcija SelectObject vrne s katerim si ga zamenjal (se pravi z defaultom sem ga zamenjal, zato dobim nazaj default pen).
Tega na koncu uporabis, da povrnes stanje.
Razmisljaj o temu tako, kot ce bi uporabil besedo new na nekem pointerju. Vsak new moras uniciti z delete, da ni memory leaka.
Ko uporabljas DC je priporocljivo vse skupaj vrniti nazaj v staro stanje.
Tako, na zacetku, ko (recimo) zamenjam default pen z mojim rdecim, funkcija SelectObject vrne s katerim si ga zamenjal (se pravi z defaultom sem ga zamenjal, zato dobim nazaj default pen).
Tega na koncu uporabis, da povrnes stanje.
Razmisljaj o temu tako, kot ce bi uporabil besedo new na nekem pointerju. Vsak new moras uniciti z delete, da ni memory leaka.
[D-mon]
d-mon ::
Ja potem pa reces nekaj takega (nisem testiral, pisem z glave).
CPen *mypen;
int i, r, g, b, x1, y1, x2, y2;
for(i=0;i<100;i++)
{
mypen = new CPen;
//nastavi r, g, b po zelji.
mypen->CreatePen(PS_SOLID, 2, RGB(r,g,b));
pDC->SelectObject (mypen);
pDC->Ellipse(x1,y1,x2,y2);
delete mypen;
}
CPen *mypen;
int i, r, g, b, x1, y1, x2, y2;
for(i=0;i<100;i++)
{
mypen = new CPen;
//nastavi r, g, b po zelji.
mypen->CreatePen(PS_SOLID, 2, RGB(r,g,b));
pDC->SelectObject (mypen);
pDC->Ellipse(x1,y1,x2,y2);
delete mypen;
}
[D-mon]
Yeznick ::
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [VC++, MFC] OnPaintOddelek: Programiranje | 988 (955) | whatever |
» | mfc problemOddelek: Programiranje | 1637 (1201) | FuI2cY |
» | [C++]Kako narediti screenshot?Oddelek: Programiranje | 1510 (1081) | *ziga* |
» | [C++ Visual Studio] kako narisati krog?Oddelek: Programiranje | 1467 (1234) | c0dehunter |
» | [c#]4 v vrsto - padanje krogovOddelek: Programiranje | 1986 (1818) | VASkO |