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
Delphi - Ottenere immagine dal Canvas
Forum - Delphi - Ottenere immagine dal Canvas

Avatar
lavoro92 (Member)
Newbie


Messaggi: 11
Iscritto: 13/01/2011

Segnala al moderatore
Postato alle 11:43
Domenica, 10/04/2011
Come posso ottenere l' immagine avendo a mia disposizione il Canvas senza utilizzare il metodo Pixels?.
Ho provato con il bitblt purtroppo però, quando vado a prendere l' immagine mi prende anche le finestre sopra , come posso prendere esclusivamente l' immagine ?

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 13:50
Domenica, 10/04/2011
Su che oggetto fa riferimento il tuo canvas? Inoltre non ho ben capito cosa intendi per "ottenere l'immagine": intendi una TBitmap o TJPEG?

PM Quote
Avatar
lavoro92 (Member)
Newbie


Messaggi: 11
Iscritto: 13/01/2011

Segnala al moderatore
Postato alle 14:43
Domenica, 10/04/2011
No io ho solo un oggetto di tipo Tcanvas.
Per farla breve io ho un pannello ma io del pannello ho solo la proprietà Canvas non ho Picture e compagnia bella .
Come faccio ad ottenere l' immagine attraverso l' utilizzo del Canvas senza l' utilizzo della proprietà pixels?

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 15:02
Domenica, 10/04/2011
La proprietà CopyRect dovrebbe fare al caso tuo allora (se ho capito bene):
http://docwiki.embarcadero.com/VCL/en/Graphics.TCanvas.Cop ...

PM Quote
Avatar
lavoro92 (Member)
Newbie


Messaggi: 11
Iscritto: 13/01/2011

Segnala al moderatore
Postato alle 17:38
Giovedì, 21/04/2011
Niente da fare non salva .>.<
Codice sorgente - presumibilmente Delphi

  1. procedure tgestionetabelle.SaveImagetofile(Name: string; Resize: Boolean;
  2.   widthmax, heightmax: integer);
  3. var
  4.   img: timage;
  5. begin
  6.   TRY
  7.     img := timage.Create(Self);
  8.     img.Height := Self.GetmaxY;
  9.     img.Width := Self.GetmaxX;
  10.      Self.Canvas.CopyRect(rect(0,0,img.Width,img.Height),img.Canvas,rect(0,0,img.Width,img.Height));
  11.     if Resize then
  12.     BEGIN
  13.       img.Width := widthmax;
  14.       img.Height := heightmax;
  15.       img.Proportional := true;
  16.     END;
  17.     img.Picture.Savetofile(NAME);
  18.   Except
  19.     img.Free;
  20.   END;
  21. end;


PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 23:13
Giovedì, 21/04/2011
forse hai invertito i canvas...
img.Canvas.CopyRect(rect(0,0,img.Width,img.Height),Canvas,rect(0,0,img.Width,img.Height));
così dovrebbe funzionare
G.


Ibis redibis non morieris in bello
PM Quote
Avatar
lavoro92 (Member)
Newbie


Messaggi: 11
Iscritto: 13/01/2011

Segnala al moderatore
Postato alle 12:10
Venerdì, 22/04/2011
Si funziona ma c'e il solito problema che anche se faccio il copyrect le finestre sopra a quella zona definita dal pannello mi si vedono uguale!!! come faccio? premetto uso windows xp

PM Quote