PDA

View Full Version : [C] Librerie grafiche


psico88
04-05-2009, 17:14
Ciao a tutti,
io e un mio compagno di corso abbiamo pensato di sviluppare un piccolo programma per gli studenti degli anni successivi al nostro (da mettere tra le dispense del corso), da usare come supporto per un corso di dispositivi elettronici... il programma è abbastanza semplice, deve solo leggere dei parametri e, in base a questi, tracciare dei grafici di funzioni, ed è quasi finito. C'è però un piccolo problema con la grafica, che mi è venuto in mente oggi. Per fare il programma ho usato il vecchio TurboC 2.01 :rolleyes: , per due motivi:

-è il compilatore con cui ho imparato a programmare e lo conosco molto bene, e soprattutto avendo anche altri corsi da seguire non ho molto tempo per imparare a usare da zero un nuovo compilatore;

-il programma che abbiamo in mente di fare non è molto complicato, quindi anche se vecchio è comunque più che sufficiente come compilatore;

Per tracciare i grafici ho usato le funzioni della libreria 'graphics.h', e fin qui tutto ok. Il fatto è che io uso windows xp :muro: (e infatti il programma funziona bene), ma mi è venuto in mente oggi che su Vista la grafica a tutto schermo con le applicazioni DOS non funziona (mi ricordo che TurboC a tutto schermo non si poteva mettere)... e questo è un bel problema, dato che la maggior parte degli studenti lavora con il portatile, e sui portatili odierni di default è installato Vista. Quindi mi sa che il cambio di compilatore è quasi d'obbligo (o perlomeno mi serve una libreria grafica più moderna, che dubito sia compatibile con il vecchio TurboC)... ora, di funzioni grafiche nel programma ne uso giusto due o tre: quella per inizializzare/testare la grafica, tracciare le linee e cambiare colore; quindi il cambio di libreria grafica non mi stravolgerebbe il codice, ma dovrei giusto modificare qualche riga.

Quindi vorrei sapere se potete consigliarmi una libreria grafica (e un compilatore che magari la incorpori) che funzioni sotto Vista, e possibilmente "facile" da usare.. ho provato a guardare le librerie opengl, ma la documentazione è davvero troppo vasta, e per quello che devo farci io (cioè tracciare delle linee per fare i grafici) mi sembra davvero troppo, come ho già detto uso giusto due o tre funzioni "grafiche" in tutto.. mi basterebbe sapere la sintassi delle funzioni che uso con la libreria nuova e modificarle.

Grazie :)

71104
04-05-2009, 18:48
temo che in C non troverai mai nulla di semplice da usare, dovresti essere disposto a cambiare linguaggio.

BrutPitt
04-05-2009, 18:55
A suo tempo feci il porting di applicazioni DOS che usavano grafica 2D utilizzando le SDL lib.

http://www.libsdl.org/

Davvero semplici ed intuitive.

Compili direttamente in Win32 o Win64 e sono supportate dai compilatori:
Visual C++ (dalla 6.0 in su), Borland C++, Cygwin, MinGW, Dev-C++, Watcom C++

... e in piu' sono portabili su piattaforma LinuX, MacOSX... e altre

BrutPitt
04-05-2009, 19:19
Ed aggiungo... perche' ricordavo, ma sono andato a verificare... che esiste anche un porting (parziale) delle BORLAND BGI su SDL.

http://www.codedread.com/boss.php

psico88
04-05-2009, 19:54
Grazie, ho guardato un po' le librerie sdl che mi hai detto... effettivamente sembrano semplici da usare, anche la documentazione sembra ben fatta. Adesso installo Codeblock o DevC e ci smanetto un po', vediamo se riesco a usarle :stordita:

71104
04-05-2009, 22:37
Grazie, ho guardato un po' le librerie sdl che mi hai detto... effettivamente sembrano semplici da usare, anche la documentazione sembra ben fatta. Adesso installo Codeblock o DevC e ci smanetto un po', vediamo se riesco a usarle :stordita: CodeBlocks, per caritá, assolutamente CodeBlocks!!! anzi se possibile Visual C++, ma Dev-C++ fai conto che non esista...

psico88
05-05-2009, 17:40
Non ci capisco niente... ma queste librerie grafiche si usano solo da sole? cioè, se io includo solo 'SDL\sdl.h' tutto ok, riesco a usare i comandi della libreria sdl, ma se oltre a quello includo librerie tradizionali come 'stdio.h' succedono cose strane, mi crasha il programma, va in loop infinito senza motivo, non parte proprio e devo riavviare Codeblocks... :confused: :confused:

-Slash
05-05-2009, 18:41
Non ci capisco niente... ma queste librerie grafiche si usano solo da sole? cioè, se io includo solo 'SDL\sdl.h' tutto ok, riesco a usare i comandi della libreria sdl, ma se oltre a quello includo librerie tradizionali come 'stdio.h' succedono cose strane, mi crasha il programma, va in loop infinito senza motivo, non parte proprio e devo riavviare Codeblocks... :confused: :confused:
Guarda, secondo me fai prima ad imparare un altro linguaggio di programmazione che a creare una interfaccia grafica in c :asd:

BrutPitt
05-05-2009, 18:44
Non ci capisco niente... ma queste librerie grafiche si usano solo da sole? cioè, se io includo solo 'SDL\sdl.h' tutto ok, riesco a usare i comandi della libreria sdl, ma se oltre a quello includo librerie tradizionali come 'stdio.h' succedono cose strane, mi crasha il programma, va in loop infinito senza motivo, non parte proprio e devo riavviare Codeblocks... :confused: :confused:

No, assolutamente... si usano tranquillamente in unione ad altre librerie, come al solito... sicuramente nessun problema ad integrarle con le C Run Time Library.

Qui puoi vedere l'esempio di inizializzazione nella documentazione, proprio con l'uso di <stdio.h>:

http://docs.huihoo.com/sdl/1.2/guidebasicsinit.html

Ora, non so che versione hai scaricato per codeblocks (se le hai installate attraverso un DevPaks o le hai ricompilate) e che compilatore usi internamente ad esso... ma personalmente le ho usate in Windows con compilatori di varie versioni del VisualC++ e gcc (sia mingw che cygwin) e in Linux con gcc e non ho avuto problemi anche integrandole con altre librerie... usandole anche assieme a OpenGL e wxWindows.

Non ottieni errori in compilazione?

Anche io ti consiglierei, come scritto da 71104 il VisualC++.

Oltretutto VisualC++ 2005 ExpressEdition e' freeware e sul sito ci SDL c'e' gia' le il pacchetto di sviluppo compilato per tale versione.

http://apdubey.blogspot.com/2009/04/microsoft-visual-studio-2005-express.html
(non trovo il link diretto, pare sia stato tolto per far spazio alle versioni 2008, comunque questo rimanda al download diretto di Microsoft)

Anche VisualC++ 2008 ExpressEdition e' freeware, ma devi ricompilarti le librarie.
http://www.microsoft.com/express/vc/

psico88
05-05-2009, 20:11
Ho scaricato la versione 8.02 di Codeblocks, uso internamente mingw come compilatore e per aggiungere le sdl ho seguito questa (http://www.lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php) guida.. non mi dà errori di compilazione, ma quando mando in run il programma impazzisce e devo usare il task manager per chiuderlo (e non ho modificato il codice originale del programma, sto solo facendo programmini di prova da una quindicina di righe)...
prima dopo il run è impazzito pure Codeblock, non mandava più in esecuzione neanche il classico programmino che stampa ''Hello World'', ho dovuto riavviare il pc... a sto punto provo visualc++ che mi hai detto, vediamo se riesco a tirarci fuori qualcosa :muro: ..

71104
05-05-2009, 23:40
Oltretutto VisualC++ 2005 ExpressEdition e' freeware Visual C++ 2005 Express Edition é stato discontinuato, ormai c'é solo la versione 2008 (che comunque non é di certo peggiore).

BrutPitt
06-05-2009, 15:01
Visual C++ 2005 Express Edition é stato discontinuato, ormai c'é solo la versione 2008 (che comunque non é di certo peggiore).

Yessssss.... l'ho immaginato quando ho notato che Microsoft rimandava alla pagina della versione 2008... anche se mantiene ancora le ISO sul proprio sito :)

Concordo con te che l'ultima versione sia migliore... ma volevo fornirgli un "pacchetto" gia' pronto di librerie e compilatore, e notavo che sul sito delle SDL erano gia' compilate quelle per la versione VC++2005.

Il "build" delle librerie per la versione 2008 e' molto semplice e rapido... ma non volevo aggiungere problematiche a quelle che gia' aveva :)

psico88
09-05-2009, 17:56
Ooooooooooook, ho installato VisualC++ 2005 Express e gli ho aggiunto le librerie SDL. Ho provato a fare un programmino di prova che fa lo switch tra la console dei comandi e una finestra aperta con le SDL e funziona :D, nessun problema di loop strani o crash...
Grazie a tutti :) , adesso mi cimento con qualche funzione più avanzata e vedo che riesco a fare