» »

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 ...

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.

losnah ::

Hja, ne vem ce jest to cist zastopm, ksn primer ne bi skodu. Jest sem tuki se zacetnik.

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.

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);
[D-mon]

losnah ::

Cool. sam kaj naredi ta stavek in zakaj sploh se rab?
pDC->SelectObject (&pOldPen);

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.
[D-mon]

losnah ::

Ok, to zdej nekak razumem. Kaj pa ce hocem izrisat 100 krogov razlicnih barv, al pa vec?

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;
}
[D-mon]

Yeznick ::

Mimogrede, ce gdo rabi, prodajam eno knjigo (anglesko) o MFC. Je odlicna!!!

Link: tukaj

Yeznick


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[VC++, MFC] OnPaint

Oddelek: Programiranje
5911 (878) whatever
»

mfc problem

Oddelek: Programiranje
161545 (1109) FuI2cY
»

[C++]Kako narediti screenshot?

Oddelek: Programiranje
121454 (1025) *ziga*
»

[C++ Visual Studio] kako narisati krog?

Oddelek: Programiranje
141397 (1164) c0dehunter
»

[c#]4 v vrsto - padanje krogov

Oddelek: Programiranje
81913 (1745) VASkO

Več podobnih tem