Oppure

Loading
16/11/11 16:37
lorenzoscarrone
vorrei sapere se esiste una funzione come in c++ che mi fa a caricare un immagine(jpeg o di qualsiasi altro formato) in una finestra grafica in pascal.
Ultima modifica effettuata da lorenzoscarrone 22/11/11 19:25
aaa
27/11/11 20:45
Phi
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:
uses windows, graph, ...


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+); 
 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;


procedure writeicofile(nomefile : pchar; x, y, larghezza, altezza :word);
var
 icon : hicon;
begin
 icon := LoadImage(hinstance, nomefile, IMAGE_ICON, larghezza,altezza, LR_LOADFROMFILE+); 
 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:
 deletedc(dc);
 deleteobject(bmp);

 deleteobject(icon);

Ultima modifica effettuata da Phi 28/11/11 18:16
aaa