PDA

View Full Version : C++ Salvare lavoro come immagine


fear fear
31-03-2007, 23:35
Ciao, vorrei chiedervi un consiglio per fare un programmino in c++.

Uso Visual c++ 6.
Ho fatto un programma che legge un file e disegna sullo schermo un disegno, ogni volta un po' diverso a seconda dei numeri che trova sul file.
Il disegno che il programma deve tracciare è più grande dello schermo, e per vederlo tutto bisogna farlo scorrere con le barre di scorrimento.
Ora io vorrei aggiungere al menù un'opzione che se viene scelta consente all'utente di salvare tutto il disegno su un file, come immagine bmp, jpg, giff , come uno vuole. Ma vorrei che venisse salvato tutto il disegno, anche la parte che cade fuori dallo schermo.
Ho trovato il modo di salvare parti di shermo, me lo hanno spiegato su un'altro forum, è un po' come fare uno screenshot. Ma a me serve salvare tutta la finestra di lavoro, nella sua interezza, anche ciò che non si vede.
Potreste darmi un consiglio?
L'architettura del documento e document/View, Single document.
Come posso fare?

fear fear
03-05-2007, 21:47
Ah, interessante...

wingman87
03-05-2007, 22:20
Non ho ben capito, che tipo di disegno tracci sullo schermo?

fear fear
05-05-2007, 23:02
Grazie per la risposta.
Praticamente nella funzione OnDraw ho scritto tutto il codice che serve per tracciare il disegno.
Il disegno è un disegno geometrico: ci sono delle rette e delle circonferenze che si intersecano, tutto qui. E' un disegno semplice, che viene modificato leggermente quando il programma legge dei numeri da un file.
Per farlo ho usato delle semplici funzioni per fare circonferenze e rette.
Solo che deve essere per forza più grande dello schermo.

Quando di deve solo vedere su schermo si può far scorrere con le barre di scorrimento laterali, che si possono aggiungere al programma, ma io vorrei fare in modo che sia possibile aggiungere una funzione che permetta di salvarlo come immagine in un file.
Quindi mi serve una funzione che salvi come immagine tutto il disegno nella sua interezza, anche le parti che cadono fuori dallo schermo nel momento in cui la funzione per fare il salvataggio viene chiamata.

Grazie mille...

ri
06-05-2007, 14:51
ottieni il DC associato all'area di disegno, trasformalo in una bitmap, e salvalo...

qui (http://www.codeguru.com/cpp/g-m/bitmap/capturing/article.php/c4919/) dovresti trovare un esempio di codice che fa quel che dico

fear fear
14-05-2007, 23:30
Scusa se non ho più risposto, sono stato molto senza controllare il forum.
Comunque mi serve ancora sapere quello che avevo chiesto.
Sono andato al link, guarderò con attenzione il listato domani e casomai chiederò qualche altra cosa.
Grazie mille per la risposta.
Ciao.

fear fear
15-05-2007, 17:16
Premetto che sono alle prime armi con il c++.
Ho preso le due funzioni che effettuano il salvataggio (quelle del listato che mi hai indicato) e le ho inserite in un nuovo progetto, fatto apposta per fare una prova.

Sono riuscito a compilare e ho provato a salvare.
Solo che il programma salva solo il contenuto visibile della finestra nella quale viene tracciato il disegno (nel mio caso ho provato a disegnare un rettangolo molto lungo che andasse fuori dai bordi della finestra, per provare). Ma non salva la parte restante dell'immagine, che sarebbe invece quello che dovrei fare io...

Hai idea di come posso modificare il sorgente per ottenere il risultato voluto?