![]() |
von TPaintbox in TImage kopieren
Hallo,
ich möchte ein Bild von einer TPaintbox in ein TImage kopieren. Habe dafür folgenden Code geschrieben, der auch funktioniert:
Delphi-Quellcode:
Aber geht das nicht auch irgendwie über "Assign" oder so? Habe das leider nicht hinbekommen...
bild2: TImage;
bild: TPaintBox; ... for y:=1 to bild.height do for x:=1 to bild.width do bild2.Canvas.Pixels[x,y]:=bild.Canvas.Pixels[x,y]; Danke schonmal! |
Re: von TPaintbox in TImage kopieren
|
Re: von TPaintbox in TImage kopieren
Wie Lukas schon schrieb:
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var r: TRect; begin Image1.Width:=PaintBox1.Width; Image1.Height:=PaintBox1.Height; r:=rect(0,0,Image1.Width,Image1.Height); Image1.Picture.Bitmap.Canvas.CopyRect(r,PaintBox1.Canvas,r); end; Klaus |
Re: von TPaintbox in TImage kopieren
Leider klappt das nicht.
Die Paintbox und das Image liegen direkt übereinander in derselben Form. Nach dem Kopieren ist das Image einfarbig grau - so wie der Formhintergrund. |
Re: von TPaintbox in TImage kopieren
Hi,
funktioniert es so?
Delphi-Quellcode:
Eventuell war die Breite und Höhe des Bitmaps = 0.
var
r: TRect; begin image1.Picture.Bitmap.Width:= Image1.Width; image1.Picture.Bitmap.Height:= Image1.Height; Image1.Width:=PaintBox1.Width; Image1.Height:=PaintBox1.Height; r:=rect(0,0,Image1.Width,Image1.Height); Image1.Picture.Bitmap.Canvas.CopyRect(r,PaintBox1.Canvas,r); |
Re: von TPaintbox in TImage kopieren
Hilft leider auch nicht. Beide, Image und Paintbox, sind ohnehin align = alClient.
|
Re: von TPaintbox in TImage kopieren
Also ein einfaches image.canvas.assign(paintbox.canvas) funktioniert bei mir nicht, es kommt ein Fehler, einem ControlCanvas könne kein ControlCanvas zugewiesen werden, was meiner Meinung ziemlicher Schwachsinn ist. Du kannst ja mal mit dem Ansatz herumprobieren, allerdings fürchte ich, dass deine ursprünglich vorgesehene Lösung die einzige ist, die funktioniert, da sonst immer der Hintergrund mitkopiert wird.
|
Re: von TPaintbox in TImage kopieren
probier mal Image1.Picture.Bitmap.Canvas.Assign
|
Re: von TPaintbox in TImage kopieren
Tut mir leid, aber bei mir spuckt er wieder eine Fehlermeldung, ähnlich der oben bereits beschriebenen, aber sinnvoller, in etwa "Zuweisung von ControlCanvas an BitmapCanvas".
|
Re: von TPaintbox in TImage kopieren
Hallo,
sowohl TPaintBox als auch TImage werden beide nur auf das Form-Canvas draufgepackt und sind keine echten WinControls. Deswegen sind Device-Contexts praktisch "write-only", du kannst sie nicht sicher auslesen, vor allem nicht, wenn sie übereinander liegen. Deshalb solltest du mit ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz