Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Caricare immagini in una finestra grafica in pascal
Forum - Pascal - Caricare immagini in una finestra grafica in pascal

Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 17:37
Mercoledė, 16/11/2011
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 il 22/11/2011 alle 20:25
PM
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Up
2
Down
V
Segnala al moderatore
Postato alle 21:45
Domenica, 27/11/2011
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

  1. uses windows, graph, ...



Codice sorgente - presumibilmente Pascal

  1. procedure writebmpfile(nomefile : pchar; x, y, larghezza, altezza :word);
  2. var
  3.  bmp : hbitmap;
  4.  dc : hdc;
  5.  w, h : word;
  6. begin
  7.  bmp := LoadImage(hinstance, nomefile, IMAGE_Bitmap, 0, 0, LR_LOADFROMFILE+$20);
  8.  dc := createcompatibledc(0);
  9.  selectobject(dc,bmp);
  10.  bitblt(windc, x, y, larghezza, altezza, dc, 0, 0, srccopy);
  11.  bitblt(bitmapdc, x, y, larghezza, altezza, dc, 0, 0, srccopy);
  12. end;



Codice sorgente - presumibilmente Pascal

  1. procedure writeicofile(nomefile : pchar; x, y, larghezza, altezza :word);
  2. var
  3.  icon : hicon;
  4. begin
  5.  icon := LoadImage(hinstance, nomefile, IMAGE_ICON, larghezza,altezza, LR_LOADFROMFILE+$20);
  6.  drawicon(windc,x,y,icon);
  7.  drawicon(bitmapdc,x,y,icon);
  8. 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) :
Testo quotato


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

  1. deletedc(dc);
  2.  deleteobject(bmp);


Codice sorgente - presumibilmente Plain Text

  1. deleteobject(icon);




Ultima modifica effettuata da Phi il 28/11/2011 alle 19:16
Grazie Boss - lorenzoscarrone - 28/11/11 17:25
PM