Forum » Programiranje » [C++ Visual Studio] kako narisati krog?
[C++ Visual Studio] kako narisati krog?
c0dehunter ::
Ok, pri dotičnem predmetu imamo povsem neusklajene predavanja in vaje. Pri predavanju gledamo primere spletnih strani, katere barve niso primerne, pisave, itd... Na vajah pa moramo izdelati program v Visual Studiu 2008 po predhodnem ogledu primera.
Naredil sem že (z velikim naporom) polovico, problem je risanje likov na zaslon. Sicer imam primer, kako ga narisati v celotno okno, ampak jaz bi ga moral v Picture Control (glej primer - klikni Risanje).
Na Picture Control sem dodal control spremenljivko m_izris. Naredil sem tudi dodaten razred za dotični Picture Control. Nekako bi moral alternirat CPaintDC dc(this), ampak ne vem kaj naj vstavim namesto this - poskusil sem že z CRisalnaPovrsina (ime PictControl classa). Kaj naj vnesem namesto this, da se bo nanašalo na ta Picture Control?
Naredil sem že (z velikim naporom) polovico, problem je risanje likov na zaslon. Sicer imam primer, kako ga narisati v celotno okno, ampak jaz bi ga moral v Picture Control (glej primer - klikni Risanje).
Na Picture Control sem dodal control spremenljivko m_izris. Naredil sem tudi dodaten razred za dotični Picture Control. Nekako bi moral alternirat CPaintDC dc(this), ampak ne vem kaj naj vstavim namesto this - poskusil sem že z CRisalnaPovrsina (ime PictControl classa). Kaj naj vnesem namesto this, da se bo nanašalo na ta Picture Control?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
nevem zakaj delas v picture controli, ce pa moras v comboboxu
drugače pa preveč kompliciras
comboboxu nastavis indexe recimo za elipsa=0, krog=1, trikotnik=2
pol pa v onpaintu sam if stavke
if(combo_vnos==0)
{ tu pride koda za elipso }
drugače pa preveč kompliciras
comboboxu nastavis indexe recimo za elipsa=0, krog=1, trikotnik=2
pol pa v onpaintu sam if stavke
if(combo_vnos==0)
{ tu pride koda za elipso }
Zgodovina sprememb…
- spremenilo: bigbada ()
whatever ::
Mislim, da moraš najprej s klicem CreateDC() pointer ustvarit, ki ga daš namesto this.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
bigbada ::
glej, pogledal sem ono tvojo kodo. nevem zakaj filas box z ono metodo adstring
recimo kliknes tam na combox v dialogih pa gres properties pa pod Data vneses: Elipsa;Krog;Trikotnik; pa ni treba nic implementirat
pol pa das v RisanjeDlg
se prej ustvaris 2 spremenljivki ki bereta iz combo boxa
jaz mam tak:
void CDialogRisanje::OnCbnCloseupCombo()
{
combo_izbira=combo_vnos.GetCurSel();
Invalidate();
}
pol pa v onpaint: recimo za 1 lik
if(combo_izbira==0)//combobox0-elipsa
{
CBrush barvaElipse(RGB(55,55,255));
dc.SelectObject( barvaElipse );
dc.Ellipse(10,10,200,100);
}
recimo kliknes tam na combox v dialogih pa gres properties pa pod Data vneses: Elipsa;Krog;Trikotnik; pa ni treba nic implementirat
pol pa das v RisanjeDlg
se prej ustvaris 2 spremenljivki ki bereta iz combo boxa
jaz mam tak:
void CDialogRisanje::OnCbnCloseupCombo()
{
combo_izbira=combo_vnos.GetCurSel();
Invalidate();
}
pol pa v onpaint: recimo za 1 lik
if(combo_izbira==0)//combobox0-elipsa
{
CBrush barvaElipse(RGB(55,55,255));
dc.SelectObject( barvaElipse );
dc.Ellipse(10,10,200,100);
}
Zgodovina sprememb…
- spremenilo: bigbada ()
c0dehunter ::
bigbada, hvala za pomoč, ampak v primeru po katerem se je treba zgledovat je List Box ne Combo Box.
Pa še nekaj - kam pa potem izrisuješ like?
Pa še nekaj - kam pa potem izrisuješ like?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
poglej tam navodila kere razrede vse rabis:)
pise mfc razred ccombobox, drugace pa je tak vseeno..
kak to mislis kam izrisujes?
pac direktno na oni dialog ki si ga ustvaril za risanje..
a veš, kot je v primeru v knjigi kjer je celi dialog pobarvan pa lik narisan..
sam tu naredis pac manjse dimenzije pri ozadjih, da ostanejo radio buttni pa oni gradniki veni, če veš kaj a mislim:) in pol dobis tak kot je na primeru ane
pise mfc razred ccombobox, drugace pa je tak vseeno..
kak to mislis kam izrisujes?
pac direktno na oni dialog ki si ga ustvaril za risanje..
a veš, kot je v primeru v knjigi kjer je celi dialog pobarvan pa lik narisan..
sam tu naredis pac manjse dimenzije pri ozadjih, da ostanejo radio buttni pa oni gradniki veni, če veš kaj a mislim:) in pol dobis tak kot je na primeru ane
Zgodovina sprememb…
- spremenilo: bigbada ()
c0dehunter ::
Aha, tak pa že
Hvala za pomoč, zdaj bi pa moglo it.
Hvala za pomoč, zdaj bi pa moglo it.
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
c0dehunter ::
Še nekaj - če dodaš event-handler (oz. kar funkcijo) in jo kasneje ne potrebuješ več, kako jo zbrišeš? Razen tako da jo izbrišeš iz vseh datotek v katerih je omenjena. Torej nekak prek Resource managerja ali kaj podobnega?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
enostavno al jo pustiš al jo zakomentiraš al pa izbrišeš..
najlazje je ne delat event handlerjev, ki ti dodajo se neki ostali shiet zraven
ce hoces recimu gradniku dodat nek event sam 2x kliknes na njega pa te pomakne na ono //todo kodo za njega pa je to to.. kasneje jo tudi lahko enostavno zbrises
ce bos pa kliknil desno pa add event handler pa se bos dobil nepotrebne dele kode zraven :)
najlazje je ne delat event handlerjev, ki ti dodajo se neki ostali shiet zraven
ce hoces recimu gradniku dodat nek event sam 2x kliknes na njega pa te pomakne na ono //todo kodo za njega pa je to to.. kasneje jo tudi lahko enostavno zbrises
ce bos pa kliknil desno pa add event handler pa se bos dobil nepotrebne dele kode zraven :)
c0dehunter ::
Aha, hvala za nasvet.
Sicer me še nekaj zajebava pri radio gumbih - ustvaril sem groupbox, dal noter nekaj radiobuttonov in vsakega ustrezno poimenoval. Na prvega sem dal dve spremenljivki (ena control, ena int) in mu nastavil GROUP na TRUE. Ostale buttone sem pustil pri miru (razen spremembe identifikatorja in Captiona). Na prvi gumb sem dal tut event handler OnBnClicked (on button clicked) in notri vnesel:
izbira_ozadja=seznamOzadij.GetCheckedRadioButton(0,3); //tole ne vem če je prava funkcija
Invalidate();
Zdaj je problem, ker katerikoli gumb izberem, se v izbira_ozadja zapiše 0 (se pravi tisti prvi gumb)...
Sicer me še nekaj zajebava pri radio gumbih - ustvaril sem groupbox, dal noter nekaj radiobuttonov in vsakega ustrezno poimenoval. Na prvega sem dal dve spremenljivki (ena control, ena int) in mu nastavil GROUP na TRUE. Ostale buttone sem pustil pri miru (razen spremembe identifikatorja in Captiona). Na prvi gumb sem dal tut event handler OnBnClicked (on button clicked) in notri vnesel:
izbira_ozadja=seznamOzadij.GetCheckedRadioButton(0,3); //tole ne vem če je prava funkcija
Invalidate();
Zdaj je problem, ker katerikoli gumb izberem, se v izbira_ozadja zapiše 0 (se pravi tisti prvi gumb)...
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
jaz sem enostavno dodal samo eno spremenljivko int ozadje;
pa sem pol kliknil na prvi radio button in me je vrglo v metodo
void CDialogRisanje::OnBnClickedRadio1()
{ //pa sem tole not napisal
ozadje=1; //pac ozadju sem nastavil neko vrednost da jo potem v on paintu lahko klicem
Invalidate();
}
pol pa sem dal v CdialogRisanje::OnPaint(){
CPaintDC dc(this);
if(ozadje==1)
dc.FillSolidRect(0,0,330,430,RGB(0,0,0)); //crna barva
if(ozadje==2)
....
pa sem pol kliknil na prvi radio button in me je vrglo v metodo
void CDialogRisanje::OnBnClickedRadio1()
{ //pa sem tole not napisal
ozadje=1; //pac ozadju sem nastavil neko vrednost da jo potem v on paintu lahko klicem
Invalidate();
}
pol pa sem dal v CdialogRisanje::OnPaint(){
CPaintDC dc(this);
if(ozadje==1)
dc.FillSolidRect(0,0,330,430,RGB(0,0,0)); //crna barva
if(ozadje==2)
....
c0dehunter ::
Hvala.
Mogoče kdo ve za CListCtrl kje se vnese atribut TVS_FULLROWSELECT, da bi se ob kliku na posamezno celico izbrala celotna vrstica?
Mogoče kdo ve za CListCtrl kje se vnese atribut TVS_FULLROWSELECT, da bi se ob kliku na posamezno celico izbrala celotna vrstica?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
bigbada ::
jaz mam tak
clc->SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
to je za mrežo pa da se cela vrstica izbere
clc je seveda kazalec ki kaze na CListCtrl
clc->SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
to je za mrežo pa da se cela vrstica izbere
clc je seveda kazalec ki kaze na CListCtrl
c0dehunter ::
Hvala, sem zrihtal
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] ukaz radirkaOddelek: Programiranje | 1119 (912) | japol |
» | [VC++, MFC] OnPaintOddelek: Programiranje | 1008 (975) | whatever |
» | mfc problemOddelek: Programiranje | 1651 (1215) | FuI2cY |
» | [c#]4 v vrsto - padanje krogovOddelek: Programiranje | 1995 (1827) | VASkO |
» | [C++] preprosto risanjeOddelek: Programiranje | 1668 (1545) | popec |