Phi (Member)
Expert
Messaggi: 241
Iscritto: 30/12/2009
|
Se vuoi caricare una immagine .bmp(windows bitmap) oppure .ico(windows/mac icon) e utilizzi windows allora č possibile scrivere una funzione.
Suppongo che tu stia utilizzando la libreria graph.
Innanzitutto dei aggingere la unit windows fra la unit usate:
Codice sorgente - presumibilmente Pascal |
Codice sorgente - presumibilmente Pascal |
procedure writebmpfile(nomefile : pchar; x, y, larghezza, altezza :word); var bmp : hbitmap; dc : hdc; w, h : word; begin bmp := LoadImage(hinstance, nomefile, IMAGE_Bitmap, 0, 0, LR_LOADFROMFILE+$20); dc := createcompatibledc(0); selectobject(dc,bmp); bitblt(windc, x, y, larghezza, altezza, dc, 0, 0, srccopy); bitblt(bitmapdc, x, y, larghezza, altezza, dc, 0, 0, srccopy); end;
|
Codice sorgente - presumibilmente Pascal |
procedure writeicofile(nomefile : pchar; x, y, larghezza, altezza :word); var icon : hicon; begin icon := LoadImage(hinstance, nomefile, IMAGE_ICON, larghezza,altezza, LR_LOADFROMFILE+$20); drawicon(windc,x,y,icon); drawicon(bitmapdc,x,y,icon); end;
|
Per altri formati ci sono le unit di lazarus o altre unit che puoi cercare su internet(mi ricordo di averne trovate alcune tempo fa).
Se usi sistemi linux con x11 ci sono delle funzioni per alcuni formati.
Edit (Aggiunto in seguito) :
Ora che rileggo mi č venuto in mente che sarebbe meglio liberare la memoria utilizzata.
Prima dell'end delle 2 procedure conviene aggiungere questi testi:
Codice sorgente - presumibilmente Plain Text |
deletedc(dc);
deleteobject(bmp);
|
Codice sorgente - presumibilmente Plain Text |
|
Ultima modifica effettuata da Phi il 28/11/2011 alle 19:16 |