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

Iscrtavanje linije u C++-u

[es] :: C/C++ programiranje :: Iscrtavanje linije u C++-u

[ Pregleda: 2938 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kovach
Srdjan Kovacic
Beograd

Član broj: 17057
Poruke: 157
194.106.187.*

Jabber: kovach@elitesecurity.org


+1 Profil

icon Iscrtavanje linije u C++-u20.06.2006. u 03:47 - pre 217 meseci


Dakle ljudi poludeo sam...

Ne mogu da verujem kol'ko neke stvari ili zapravo JESU komplikovane ili takve ispadnu samo za mene :)... nakon tol'kih godina...
Elem...
Odavno radim u Visual Studio.NET C++-u... dakle obican c++, crni prozor i ostalo, nikakve forme i sl... dakle ist'o k'o C...
I sad odjednom,po prvi put (jer inace ne radim stvari tog tipa), zatrebalo mi pre 2 dana da nesto nacrtam na istom tom crnom ekranu kada se startuje program, nista komplikovano, u pitanju je neka tabelica koja bi ocas posla bila resena jednostavnim iscrtavanjem linija... ZNACI OBICNIH LINIJA! :) Verujete li vi meni da se ja zlopatim vec 4 sata (posto sam tek veceras uzeo da se bakcem sa tim) i nikako ne mogu da izvalim kako se to radi... naletao sam na razne varijante, te MFC, te CDC, te GDI, sa sve f-ijama MoveTo(), LineTo(), i sl. i kako sta pokusam tako nece da radi... :) Izvinite ako pricam malo nepovezano, mozda cak lupetam, ali verujte mi da mi je skroz bezveze kada posle C-a (doduse onaj stari borland-ov... verzija 3.0 :) ) u kome sam to radio levom rukom, sada u tom sjajnom-bajnom .NET C++ nemam blage veze... nimalo prijatan osecaj...
Da skratim pricu...
Zamolio bih nekoga ko zna, da mi ovde okaci mali malecki kod koji kada se pokrene u C++ iscrta liniju na izlazu... odnosno drugim recima da me spase visecasovnog nerviranja i mlacenja prazne slame :)... Dakle najvise me buni sta se include-uje, kojim redosledom, koji je namespace (dodjavola sa njim :) ) i takve stvarcice... zanima me bas bas jednostavno ali kompletno resenje za iscrtavanje linije od tacke A(x1,y1) do tacke B(x2,y2). Po nekoj analogiji, pretpostavljam da je, kada to vidim i skapiram, preci na ostale metode tipa Arc(), Polygon(), Circle() i sl. maciji kashalj....

Hvala svima unapred...

Pozdrav...
Kovach
 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 193
*.ADSL.neobee.net.



Profil

icon Re: Iscrtavanje linije u C++-u20.06.2006. u 07:59 - pre 217 meseci
napravi MFC dialog-based aplikaciju i izvedi klasu iz npr CStatic, neka se zove npr. CDrawPane. u tu klasu dodaj handler za WM_DRAW i on neka izgleda recimo:
Code:

CPaintDC dc(this); // device context for painting
    
// TODO: Add your message handler code here
    
CRect rcThis;
GetClientRect(&rcThis);

dc.MoveTo(0,0);
dc.LineTo(rcThis.Width(), rcThis.Height());

dc.MoveTo(0, rcThis.Height() >> 1);
dc.LineTo(rcThis.Width() >> 1, rcThis.Height() >> 1);

ovo ce ti iscrtati dve linije: jednu dijagonalu od levog gornjeg do desnog donjeg ugla i jednu od polovine visine sa leve strane do centra kontrole.

[Ovu poruku je menjao nikoladsp dana 20.06.2006. u 09:11 GMT+1]

[Ovu poruku je menjao nikoladsp dana 20.06.2006. u 09:11 GMT+1]
ja sam panker sa diplomom kod moje mame...
Prikačeni fajlovi
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Iscrtavanje linije u C++-u20.06.2006. u 08:14 - pre 217 meseci
Vidi ovo: http://functionx.com/win32/Lesson10.htm
 
Odgovor na temu

stargazer
bgd

Član broj: 85916
Poruke: 117
*.eunet.yu.



Profil

icon Re: Iscrtavanje linije u C++-u20.06.2006. u 13:37 - pre 217 meseci
Ja ne znam odgovor na pitanje koje je čovek postavio, ali meni se čini da je njemu potrebno da iscrta liniju u konzolnoj aplikaciji na ekranu Command Prompta.
Unapred se izvinjavam ako grešim.
With no lovin' in our souls and no money in our coats you can't say we're satisfied
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.solin.oss.unist.hr.



+25 Profil

icon Re: Iscrtavanje linije u C++-u20.06.2006. u 13:56 - pre 217 meseci
Ako je stargazer u pravu, probaj ovo :

http://conio.sourceforge.net/

To je rewrite Borlandove CONIO biblioteke, za Windowse. Medjutim, ja je samo koristim kroz MinGW kompajler, vjerovatno ce se moc natjerat da radi sa Visual Studiom.

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

kovach
Srdjan Kovacic
Beograd

Član broj: 17057
Poruke: 157
*.dialup.sezampro.yu.

Jabber: kovach@elitesecurity.org


+1 Profil

icon Re: Iscrtavanje linije u C++-u21.06.2006. u 02:50 - pre 217 meseci


E ljudi, hvala svima puno... pokusacu ovo sto mi je Nikola predlozio, ali u svakom slucaju stargazer JESTE u pravu, tako da ako to nije ovo sto cu da pokusam, onda to nije resenje za moj problem... opet ako je i to slucaj :) onda cu da pokusam i ovo sto je Zare predlozio...

U svakom slucaju, ako neko zna jos neko evenutalno resenje za problem sa konzolnom aplikacijom (dakle po startovanju programa javlja se Command Prompt prozor u kome se izvrsava odradjeni program)... neka javi... od visa glava ne boli...

Hvala jos jednom...

Pozdrav....
Kovach
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Iscrtavanje linije u C++-u21.06.2006. u 03:43 - pre 217 meseci
Takodje mozes da pokusas sa ncurses bibliotekom. Ona se kompajlira na windowsu sa mingw ili cygwin kompajlerom.

http://www.gnu.org/software/ncurses/ncurses.html


Tko leti vrijedi
 
Odgovor na temu

kovach
Srdjan Kovacic
Beograd

Član broj: 17057
Poruke: 157
*.dialup.sezampro.yu.

Jabber: kovach@elitesecurity.org


+1 Profil

icon Re: Iscrtavanje linije u C++-u21.06.2006. u 19:32 - pre 217 meseci

Evo me opet... hvala na predlogu, deluje interesantno, no, ne znam zasto, ali ja sam bio ubedjen da postoji neko lakse reshenje vec integrisano u VS.NET C++ u vidu neke .h datoteke ili slicno, koja se includuje, definishu se neki njeni parametri odnosno objekti u samom kodu programa i jednostavno se koriste f-ije koje su za to namenjene... mislim da ipak nije nerealno ocekivati tako nesto od C++-a jer ovo sto meni treba uopste nije komplikovano... crtanje linija na Command Prompt ekranu... mis'im stvaaaarno... u C-u je to, kol'ko se secam, bilo reseno datotekom <graphics.h> i njenim funkcimama loadgr() za inicijalizaciju grafike i recimo funkicijom line(x1,y1,x2,y2) za iscrtavanje linije... bilo bi malo bezveze kada bi to u C-u bilo tek tako jednostavno, u vidu mogucnosti programskog jezika kao takvog (dakle bez nekih nashih intervencija tipa dodavanje nekih hedera ili slicno), a sada u C++ da to bude potpuno drugacije i sto je jos gore - komplikovanije...

Sto se <conio.h> hedera tice, koliko se ja secam on se odnosi na manipulaciju texta... dakle pozicija kursora, koordinate pocetnok karaktera niza znakova i slicne stvari... ne znam, mozda gresim, ali mislim da je conio napravljen za to, meni ovde naravno treba graficka linija, a ne linija texta... postoji opcija da su u taj novi conio za Win ubacili nesto novo, tako da cu pogledati ovo sto je Zare stavio, ali kazem, ako se nista nije promenilo, mislim da to nije to, ako sam pogresio, ispravite me ili cu se, u krajnoj liniji ako pogresim - ispraviti sam... :)

Hvala puno svima, i nadam se da cemo uspeti da iskombinujemo nesto, ali iskreno - cudi me to sto ispada da niko nikada nije radio ovakve stvari, pa da ono, k'o iz rukava, moze da istrese jedan, po mom mislienju, relativno jedostavan kod... naravno nije jednostavan za mene, jer da jeste ne bih vas ni pitao, ali mislim ipak ovde ima masa ljudi koji se programiranjem bave vec dugi niz godina, pa kazem da pretpostavljam da je stvar jednostavna, iz njihove tacke gledista...

U svakom slucaju, svaki predlog i svaka pomoc su vise nego dobrodosli...

Hala i pozdrav....
Kovach
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.89.*



Profil

icon Re: Iscrtavanje linije u C++-u21.06.2006. u 20:42 - pre 217 meseci
Nije mi bas jasno sta zelis da urads? Te stare DOSovske funkcije za rad sa grafikom su graficku prebacivale karticu iz textuelni u graficki mod i onda si mogao da crtas linije, krugove, itd. Danas Windows radi u grafickom modu a konzole se simulira.
Ako ti treba tekstuelna grafika to mozes izvesti pomocu ASCII karaktera. U celom setu postoji nekoliko karaktera pomoc kojih mozes simulirati horizontalnu, vertikalnu liniju, ukrstanje horizontalne i vertikalne linije, cosak, dupla linija, itd... Na ovaj nacin mozes iscrtati nesto kao npr. Norton Commander.

Dakle, ako zelis tekstuelnu grafiku, MSDN u ruke i prouci sledece funkcije:

Console Functions
The following functions are used to access a console.

Function Description
AllocConsole Allocates a new console for the calling process.
CreateConsoleScreenBuffer Creates a console screen buffer.
FillConsoleOutputAttribute Sets the text and background color attributes for a specified number of character cells.
FillConsoleOutputCharacter Writes a character to the screen buffer a specified number of times.
FlushConsoleInputBuffer Flushes the console input buffer.
FreeConsole Detaches the calling process from its console.
GenerateConsoleCtrlEvent Sends a specified signal to a console process group that shares the console associated with the calling process.
GetConsoleCP Retrieves the input code page used by the console associated with the calling process.
GetConsoleCursorInfo Retrieves information about the size and visibility of the cursor for the specified console screen buffer.
GetConsoleMode Retrieves the current input mode of a console's input buffer or the current output mode of a console screen buffer.
GetConsoleOutputCP Retrieves the output code page used by the console associated with the calling process.
GetConsoleScreenBufferInfo Retrieves information about the specified console screen buffer.
GetConsoleTitle Retrieves the title bar string for the current console window.
GetConsoleWindow Retrieves the window handle used by the console associated with the calling process.
GetLargestConsoleWindowSize Retrieves the size of the largest possible console window.
GetNumberOfConsoleInputEvents Retrieves the number of unread input records in the console's input buffer.
GetNumberOfConsoleMouseButtons Retrieves the number of buttons on the mouse used by the current console.
GetStdHandle Retrieves a handle for the standard input, standard output, or standard error device.
HandlerRoutine An application-defined function used with the SetConsoleCtrlHandler function.
PeekConsoleInput Reads data from the specified console input buffer without removing it from the buffer.
ReadConsole Reads character input from the console input buffer and removes it from the buffer.
ReadConsoleInput Reads data from a console input buffer and removes it from the buffer.
ReadConsoleOutput Reads character and color attribute data from a rectangular block of character cells in a console screen buffer.
ReadConsoleOutputAttribute Copies a specified number of foreground and background color attributes from consecutive cells of a console screen buffer.
ReadConsoleOutputCharacter Copies a number of characters from consecutive cells of a console screen buffer.
ScrollConsoleScreenBuffer Moves a block of data in a screen buffer.
SetConsoleActiveScreenBuffer Sets the specified screen buffer to be the currently displayed console screen buffer.
SetConsoleCP Sets the input code page used by the console associated with the calling process.
SetConsoleCtrlHandler Adds or removes an application-defined HandlerRoutine from the list of handler functions for the calling process.
SetConsoleCursorInfo Sets the size and visibility of the cursor for the specified console screen buffer.
SetConsoleCursorPosition Sets the cursor position in the specified console screen buffer.
SetConsoleMode Sets the input mode of a console's input buffer or the output mode of a console screen buffer.
SetConsoleOutputCP Sets the output code page used by the console associated with the calling process.
SetConsoleScreenBufferSize Changes the size of the specified console screen buffer.
SetConsoleTextAttribute Sets the foreground (text) and background color attributes of characters written to the screen buffer.
SetConsoleTitle Sets the title bar string for the current console window.
SetConsoleWindowInfo Sets the current size and position of a console screen buffer's window.
SetStdHandle Sets the handle for the standard input, standard output, or standard error device.
WriteConsole Writes a character string to a console screen buffer beginning at the current cursor location.
WriteConsoleInput Writes data directly to the console input buffer.
WriteConsoleOutput Writes character and color attribute data to a specified rectangular block of character cells in a console screen buffer.
WriteConsoleOutputAttribute Copies a number of foreground and background color attributes to consecutive cells of a console screen buffer.
WriteConsoleOutputCharacter Copies a number of characters to consecutive cells of a console screen


Ako zelis pravu grafiku, onda otvori prozor i u njemu koriscenjem Win 32 GDI-a ili DirectX-a ili OpenGL-a ili GDI+ crtaj sta zelis.

 
Odgovor na temu

kovach
Srdjan Kovacic
Beograd

Član broj: 17057
Poruke: 157
*.dialup.sezampro.yu.

Jabber: kovach@elitesecurity.org


+1 Profil

icon Re: Iscrtavanje linije u C++-u22.06.2006. u 21:14 - pre 217 meseci


Ok... sacuvano... prvom prilikom (koliko sutra ujutru) cu da se malo pozabavim ovim sto mi je yooyo predlozio - inace hvala za predlog... sto se tice conio.h, pregledao sam ga i nisam uspeo da nadjem nesto povezano sa grafikom, ali sam na netu nasao jedan sajt (nesto tipa - jedna lekcija nekog tutorijala) i veoma mi se svideo, sada ako bi neko mogao da mi kaze da li je to mozda ono sto meni treba, i kako meni ovo cudo da proradi (dakle sta treba da se kuca za hedere, da li nesto treba da se navodi, u smislu, datoteka i slicno posto sam nesto pokusavao i nisam uspeo...

http://www.developer.com/net/cplus/article.php/629921

Hvala i pozdrav...
Kovach
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.89.*



Profil

icon Re: Iscrtavanje linije u C++-u23.06.2006. u 19:56 - pre 216 meseci
conio.h znaci console I/O. Uglavnom je orijentisan na tekstuelni I/O i nema veze sa grafikom.
Primer koji si nasao pokazuje kako da u MFC-u crtas liniju. Primer se svodi na GDI pozive. Kad savladas GDI onda mozes da crtas svasta. Mozda bi bilo bolje da pokusas GDI+. Proguglaj malo i potrazi GDI+ tutorijale.

Da bi primer sa linka proradio potrebno je da napravis MFC aplikaciju u Visual Studiu. Ukljucivanje headera na silu bez odgovarajucih biblioteka i korektne inicijalizacije nece raditi.

yooyo
 
Odgovor na temu

kovach
Srdjan Kovacic
Beograd

Član broj: 17057
Poruke: 157
*.dialup.sezampro.yu.

Jabber: kovach@elitesecurity.org


+1 Profil

icon Re: Iscrtavanje linije u C++-u24.06.2006. u 00:28 - pre 216 meseci

Pa da... kazem - pokusao sam i nije radilo... :(

E sad... to sto ti kazes za GDI+ (odnosno MFC) ... je l mene koriscenje ove (dve) varijante uslovljava da moram da imam Windows Formu ili moze da se radi i sa obicnom konzolnom aplikacijom... koja, kao sto rekoh, kao izlazni prozor ima Command Prompt...?

Pozda
Kovach
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.89.*



Profil

icon Re: Iscrtavanje linije u C++-u24.06.2006. u 08:34 - pre 216 meseci
Crtanje u konzoli nije moguce. Jedino da tvoj konzolski program otvori prozor u kome ce da crta.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Iscrtavanje linije u C++-u

[ Pregleda: 2938 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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