Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

2D crtanje(grafika?) borland c++!!!

[es] :: C/C++ programiranje :: 2D crtanje(grafika?) borland c++!!!

[ Pregleda: 4516 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mariob
bg

Član broj: 62264
Poruke: 35
*.bitsyu.net.



Profil

icon 2D crtanje(grafika?) borland c++!!!17.02.2006. u 16:02 - pre 221 meseci

Hteo bih da napravim aplikaciju u borlandovom builderu u kojoj ce, izmedju ostalog, korisnik moci da crta 2D objekte tipa-linija, krug, dakle najjednostavnije.Pri tome treba i brisanje vec nacrtanih objekata uciniti mogucim. Kako uopste pristupiti ovakvom tipu problema?
cdmA
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: 2D crtanje(grafika?) borland c++!!!19.02.2006. u 12:13 - pre 221 meseci
Dakle, ti zelis da napravis neki GUI za crtanje: biranje objekata, stavljanje na
neku povrsinu, menjanje metrika objekta, brisanje i sl ?

Ako je to onda tome moras pristupiti postupno, na primer prvo smisli (na papiru)
kakav interfejs zelis, pa tek nakon toga mozemo razgovarati. U principu MS Word
sistem za crtanje ti može poslužiti kao uzor. Takodje i MS Paint.

Mada, cini mi se da u Borlandu vec imas GOTOV primer za crtanje. Pogledaj u
folderu EXAMPLES. Skoro sam siguran da sam to negde video...

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: 2D crtanje(grafika?) borland c++!!!19.02.2006. u 12:15 - pre 221 meseci
Evo sada sam i pogledao:

c:\Program Files\Borland\CBuilder6\Examples\Doc\GraphEx\

 
Odgovor na temu

mariob
bg

Član broj: 62264
Poruke: 35
*.bitsyu.net.



Profil

icon Re: 2D crtanje(grafika?) borland c++!!!24.02.2006. u 10:47 - pre 221 meseci
Ok, na nivou ovog gore pomenutog primera vec umem da radim. Ali problem je u tome sto kad se dodje do pitanja:kako selektovati bas neku konkretnu liniju odnosno objekat i izibrisati SAMO njega,a ne i sve sto je nacrtano preko ili "ispod" tog objekta;tada kontam da nisam pravilno postavio problem.
Kao uzor i sam sam hteo da koristim WORD.Sasvim bi mi to odgovaralo.Zeleo bih da imam i mogucnost tipa "snap to grid" i sl.Intuicija mi kaze da same "crtacke" funkcije u borlandu ne mogu resiti takav problem.
cdmA
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: 2D crtanje(grafika?) borland c++!!!27.02.2006. u 14:56 - pre 221 meseci
Mario, tvoje pitanje daaaleko izlazi iz okvira ove diskusione grupe. Ono je duboko teorijsko. :)
Predlazem da se ova tema prebaci u "The Art of Computer Programming" diskusionu grupu, jer tamo pripada.
Najkrace moguce cu odgovoriti (tj. pokusati da odgovorim) na tvoje pitanje.

1) Svi 2D objekti koje bi tvoja aplikacija trebalo da moze da crta treba da stoje u memoriji u nekoj vrsti kontejnera
2) Kad kliknes misem negde na Canvas widget-u (ili sta vec koristis) onda treba da uzmes koordinatu tacke gde je korisnik pritisnuo taster.
3) Kreiras jedan novi niz - videces kasnije zasto - nazovimo ga "aSelected".
4) Kada imas koordinatu te tacke ides redom kroz objekte i proveravas da li ta tacka PRIPADA tom nekom objektu, ako tacka pripada objektu, dodas taj objekat u "aSelected" array (u aSelected recimo cuvas samo pokazivac na taj odredjeni objekat).
5) Kada prodjes kroz sve objekte, u aSelected imas samo one objekte kojima tacka pripada - preostaje samo da proveris koji od tih objekata lezi ispred, a koji iza - to se radi tako sto svaki objekat ima u sebi informaciju o poziciji (recimo neki integer). Ostaje da prodjes kroz sve objekte iz aSelected niza, i da vidis koji je "najblizi oku". To je objekat koji je selektovan.

Ovaj proces se moze znacajno optimizovati. Jedna od prvih optimizacija koje programeri vrse je da se prvo prodje kroz objekte i ispita se samo da li tacka pripada "okviru" (svaki objekat se zapravo nalazi unutar polja koje je pravougaonog oblika). Ako pripada, onda se objekat smesti u neki privremeni niz, recimo "aCouldBeSelected". :) Nakon toga se "dublje" ispituje da li je na objekat iz aCouldBeSelected zaista kliknuto ili ne. Ovo je recimo jako vazno ako covek ima nekakve konkavne poligone, suplje objekte, itd.

Dakle, da bi resio svoj problem moras pre svega uposliti svoje znanje matematike, a bogme i dosta teorije programiranja (brzo pretrazivanje itd.).
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

mariob
bg

Član broj: 62264
Poruke: 35
*.bitsyu.net.



Profil

icon Re: 2D crtanje(grafika?) borland c++!!!27.02.2006. u 15:41 - pre 221 meseci
Leka, svidja mi se ova ideja koju si izneo.Nesto takvo mi se vrzmalo po glavi ali nisam bas znao da konkretizujem to. Medjutim, ima jedna stvar. Ako pretpostavimo da cu ja sve, sto kao korisnik u runtime-u nacrtam na canvasu, stavljati u neki kontejner, to opet znaci da cu kada obrisem neki objekat koji je iza nekog NESELEKTOVANOG objekta, izbrisati i taj neselektovani, pa cu morati ponovo da ga iscrtavam tj.refreshujem ceo canvas.Ja bih da nekako zaobidjem refreshovanje. gledao sam po netu i skidao neke package-e za borland i skontao da bi to sto ja hocu trebalo da bude CAD-ovskog tipa.tako ga zovu,i cini mi se da se tu koriste neko WINAPI programiranje.Sta sad dalje?
Ja bih npr.nesto kao CADdemo na www.codeidea.com , samo mnogo jednostavnije.
cdmA
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: 2D crtanje(grafika?) borland c++!!!27.02.2006. u 16:31 - pre 221 meseci
Citat:

[...]to opet znaci da cu kada obrisem neki objekat koji je iza nekog NESELEKTOVANOG objekta, izbrisati i taj neselektovani, pa cu morati ponovo da ga iscrtavam tj.refreshujem ceo canvas.

Zasto ne udizajniras neki History ListView (ListBox) gde ces imati u listi sve iscrtane
objekte, pa selekciju mozes da vrsisi i preko tog Historija. Takodje, to bi ti omogu-
cavalo i multiselect.

Takode, mogao bi da imas "Send To Back" cime bi taj GORNJI postao DONJI objekat
i sl.

Citat:

Ja bih da nekako zaobidjem refreshovanje.

Zasto? Borland C++ Builder strahovoto brzo vrsi ponovno iscrtavanje iz OnPain()
dogadjaja. Ako ti bude smetao flickering (treperenje), BCB6 ima propery
"DoubleBuffered" (nema ga u Object Inspectory) koga postavis na "true" i resio si
i taj problem.


 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: 2D crtanje(grafika?) borland c++!!!28.02.2006. u 12:34 - pre 221 meseci
Tebi ocigledno fali puno teorije vezane za ovaj problem... Siguran sam (odavno ne koristim Borland C++ Builder) poprilicno da Borlandov Canvas widget ima odredjene vrste "seckanja" (clipping) - te da se samo u nekom odredjenom delu Canvasa moze odraditi osvezavanje. No, sada vec zalazimo u domen optimizacije.
Tvoj problem je kako da odradis selektovanje objekta. Prodji kroz sve stavke u mom tekstu, i nauci kako da ih realizujes ("pocni od pocetka" sto bi se reklo :).
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: 2D crtanje(grafika?) borland c++!!!

[ Pregleda: 4516 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.