PDA

View Full Version : Interfaccia grafica C++


markmeister
16-06-2009, 22:18
Ciao a tutti, sono nuovo del forum e spero di non violare nessuna regola con questa discussione. :D
Comunque il mio problema è questo: devo fare un progetto per l'università e in pratica dovrei simulare il comportamento di un automa cellulare di tipo predatore-preda. Vorrei dunque visualizzare con un'interfaccia grafica carina i movimenti degli attori del modello, stampando i valori delle celle della matrice sottoforma di immagini. Quindi ad ogni passo di un ipotetico form il programma dovrebbe stampare una matrice di immagini più dei contatori sulle prede uccise ecc...
Chi mi sa aiutare a realizzare questa interfaccia grafica??
Ps utilizzo visual studio 2008 oppure eclipse, ma posso programmare anche su linux.

Tommo
16-06-2009, 22:57
Se devi visualizzare una matrice, è facilissimo:
PixelToaster (http://pixeltoaster.com/)
IMHO questo programmino è da santificare perchè in 2 righe prende una matrice e la stampa in una finestra usando la directX :D

Ovviamente questo non comprende tasti e contatori, che richiederebbero di adottare un (complesso) sistema di GUI oppure un pò di lavoro da parte tua...

markmeister
16-06-2009, 23:26
Grazie mille...ora lo provo, e cercherò di inserire danche i contatori :D :D :D :D :D

markmeister
16-06-2009, 23:48
Potresti spiegarmi brevemente come si usa?? Purtroppo il progetto deve essere pronto entro una settimana e non posso applicarmi più di tanto all'interfaccia.
Grazie Mille dell'aiuto

Tommo
17-06-2009, 08:24
Quando dicevo che servono 2 righe intendevo sul serio :D

Per inizializzare fai
myDisplay = new Display( nome_finestra, larghezza, altezza, fullscreen, pixelmode);
Questa istruzione crea una nuova finestra di display, ne puoi creare quante vuoi.
L'unico parametro "strano" è pixelmode, che indica se userai dei floats (full-range buffer a 128bit) oppure dei chars (32bit standard) per ogni colore dei pixel.

per aggiornare il display usi
display->update( (TrueColorPixel*)myBuffer ); //32 bit
display->update( (FloatingPointPixel*)myBuffer ); //128 bit

Dove myBuffer è il buffer contenente la tua immagine.
Deve avere 4 canali per pixel (r g b a) quindi per avere uno schermo bianco nel caso dei 32-bit puoi fare:

void* myBuffer = malloc( width*height*4 );
memset( myBuffer, 255, width*height*4 );


C'è poco altro da sapere, e in ogni caso c'è il doxygen (http://www.pixeltoaster.com/documentation/annotated.html) :D