Forum » Programiranje » mfc problem
mfc problem
ddeben ::
Ze kaksno uro iscem primerno funkcijo za risanje pravokotnika v mfcju. U bistvu hocem naredit mrežo pravokotnikov/kvadratov, v smislu takšno mrežo ki jo imamo pri igri sudoku. Nimam pojma kako tisti kvadrat/pravokotnik izrisat...Kaksen nasvet.
Senitel ::
MFC nima s samim risanjem nič. Uporabit moraš GDI ali pa GDI+. Poglej pa funkcijo Rectangle (GDI) ali metodo Graphics::DrawRectangle (GDI+).
ddeben ::
Se pravi je sploh mozno nardit v smislu
for (int j = 0; j < 6; j++) { for (int i = 0; i < 7; i++) { narisi pravokotnik() - tukaj nevem kako? } }
Zgodovina sprememb…
- spremenil: ddeben ()
Senitel ::
Seveda, samo dobit moraš DC handle (GDI) in/ali konstruirat Graphics objekt iz tega DC-ja. Poglej si dokumentacijo za omenjeni funkciji na MSDN-u. Window class ima metodo GetDC in vse skup zapakiraš v OnPaint.
ddeben ::
Zdej mamo nekako tkole nareto, ampak ne dobim zelenega rezultata...se pravi da bi mi narisalo mrezo. Ideje?
int visina_celice = 75;//visina okenca int sirina_celice = 75; //sirina okenca int odmik_levo = 20; //odmik od levega roba int odmik_zgoraj = 75; //odmik od zgornjega roba for (int j = 0; j < 6; j++) { for (int i = 0; i < 7; i++) { //risanje kvadratka po vrsticah dc.Rectangle(odmik_levo, odmik_zgoraj, sirina_celice, visina_celice); odmik_levo = odmik_levo + sirina_celice; //povecamo za vsak novi stolpec v vrstici (odmik od levega roba) } odmik_zgoraj = odmik_zgoraj + visina_celice; //povecamo za vsako novo vrstico (odmik od zgornjega roba) odmik_levo = 20; }
Zgodovina sprememb…
- spremenil: ddeben ()
Senitel ::
Zato ker sta prva dva parametra koordinati levega zgornjega roba pravokotnika, druge dva parametra pa koordinati desnega spodnjega roba. Ti pa namesto koordinate podaš širino in višino celice...
ddeben ::
Pac zamislil sem si mrežo - se pravi pravokotnik razdeljen na manjše pravokotnike oz. kvadrate.
Ok problem resen. ce bom se imel kaksna vprasanja, se oglasim - Hvala senitel
Ok problem resen. ce bom se imel kaksna vprasanja, se oglasim - Hvala senitel
Zgodovina sprememb…
- spremenil: ddeben ()
ddeben ::
Ok, drug problem. Uporabit moram CColorDialog in picture control. Se pravi v smislu, da bi kliknil na ta picture control in bi se mi odprl CColorDialog, zbral bi barvo potrdil, in nato bi se mi cifre oz. vstavlje številke v mreži pobarvale v tej zbrani barvi - pravtako bi se izbrana barva pokazala v tem picture controlu.
Ideje?
Ideje?
Zgodovina sprememb…
- spremenil: ddeben ()
rustypac ::
Pozdrav!
Imam težavo sicer imam narisano mrežo, sedaj ko kliknem v kvadratek mi kvadratek pobarva rdečo, ko kliknem drug kvadratek mi ga pobarva z rdečo s tem da mi prejšnji kvadratek izgine. Pri tem je pa tudi težava rad bi imel pobarvanih več kvadratkov, ne pa da mi jih sproti briše.
Prosim za pomoč!
Imam težavo sicer imam narisano mrežo, sedaj ko kliknem v kvadratek mi kvadratek pobarva rdečo, ko kliknem drug kvadratek mi ga pobarva z rdečo s tem da mi prejšnji kvadratek izgine. Pri tem je pa tudi težava rad bi imel pobarvanih več kvadratkov, ne pa da mi jih sproti briše.
Prosim za pomoč!
roba87 ::
rustypac...
Zadeva je preprosta. Delaš samo z eno spremenljivko. Ti rabiš za vsak kvadrat nov objekt (spremenljivko).
Edit: Oziroma najbolje da narediš polje.
Zadeva je preprosta. Delaš samo z eno spremenljivko. Ti rabiš za vsak kvadrat nov objekt (spremenljivko).
Edit: Oziroma najbolje da narediš polje.
Zgodovina sprememb…
- spremenil: roba87 ()
FuI2cY ::
Mrežo lahko narišeš na več načinov.
način, ki ti nariše mrežo v levi zgornji kot
pDC imaš za izris, ker rišeš v OnDraw(CDC* pDC) funkciji.
tu ti nariže mrezo 10x10 z 20 velikostjo celice. Če želiš, da ti jo npr. centrira na sredino okno pa malo pomisli, kako bi lahko naredil. Je enostavno. Ti priporočam, da si mogoče včasih pomagaš s tem, da vzameš list papirja in kuli, boš včasih prej narisal kot pa s fraj glave.
Drugače lahko barvo delaš tudi z COLORREF.
Če boš še kaj potreboval, kar z besedo na dan
način, ki ti nariše mrežo v levi zgornji kot
1. nacin za barvo kvadratka in barvo črte CBrush barvaOzadja(RGB(255, 255, 255)); pDC->SelectObject(&barvaOzadja); CPen barvaMreze(PS_SOLID, 1, RGB(0, 0, 0)); pDC->SelectObject(&barvaMreze); 2. nacin za barvo kvadratka in barvo črte, vendar je malo večja koda CBrush barvaOzadja; barvaOzadja.CreateSolidBrush(RGB(255, 255, 255)); pDC->SelectObject(&barvaOzadja); CPen barvaMreze; barvaMreze.CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); pDC->SelectObject(&barvaMreze); int vrstica = 10; int stolpec = 10; int velikostCelice = 20; for(int x = 0; x < vrstica*velikostCelice; x += velikostCelice){ for(int y = 0; y < stolpec*velikostCelice; y += velikostCelice){ pDC->Rectangle(x, y, x+velikostCelice, y+velikostCelice); } }
pDC imaš za izris, ker rišeš v OnDraw(CDC* pDC) funkciji.
tu ti nariže mrezo 10x10 z 20 velikostjo celice. Če želiš, da ti jo npr. centrira na sredino okno pa malo pomisli, kako bi lahko naredil. Je enostavno. Ti priporočam, da si mogoče včasih pomagaš s tem, da vzameš list papirja in kuli, boš včasih prej narisal kot pa s fraj glave.
Drugače lahko barvo delaš tudi z COLORREF.
Če boš še kaj potreboval, kar z besedo na dan
Zgodovina sprememb…
- spremenil: FuI2cY ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C#-pomočOddelek: Programiranje | 1147 (965) | mlamat |
» | kako narediti program ki bere drugi programOddelek: Programiranje | 5841 (4154) | imagodei |
» | [C++]Kako narediti screenshot?Oddelek: Programiranje | 1533 (1104) | *ziga* |
» | [C++ Visual Studio] kako narisati krog?Oddelek: Programiranje | 1489 (1256) | c0dehunter |
» | mfc krogiOddelek: Programiranje | 925 (763) | Yeznick |