Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TImage Paint To mehrmals aufrufen (https://www.delphipraxis.net/96618-timage-paint-mehrmals-aufrufen.html)

cltom 27. Jul 2007 14:48


TImage Paint To mehrmals aufrufen
 
Hallo DPler,

mittels PaintTo möchte ich panels auf den canvas eines Timage malen. Das funktioniert auch. Aber genau einmal nur. Jeder weitere aufruf wird ignoriert.

Im Grunde soll es so aussehen:

Delphi-Quellcode:
case ComboBox1.ItemIndex of
  0 : Panel1.PaintTo(Image1.Canvas,0,0);
  1 : Panel2.PaintTo(Image1.Canvas,0,0);
  2 : Panel3.PaintTo(Image1.Canvas,0,0);
end;
Wie gesagt, das erste mal klappts, jeder folgende wird ignoriert. Offenbar wird der Canvas nicht übermalt, warum?

dank und gruß
tom

HalloDu 27. Jul 2007 14:50

Re: TImage Paint To mehrmals aufrufen
 
Einerseits wird ja auch nur immer eine PaintTo Methode aufgerufen, je nachdem was in der Combobox ist und da du die Panels alle an die gleich Kooridnate zeichnest verdecken die sich natürlich gegenseitig also musst du sie versetzt zeichnen

Hoffe geholfen zu haben

cltom 27. Jul 2007 14:54

Re: TImage Paint To mehrmals aufrufen
 
nun, der Plan wäre, dass je nach ComboBox immer ein panel gezeichnet wird und das alte übermalt wird.

habe auch schon image1.repaint und image1.canvas.refresh drin, nutzt aber nix

bitsetter 27. Jul 2007 18:20

Re: TImage Paint To mehrmals aufrufen
 
Hi,

mit Invalidate ging es bei mir.
Delphi-Quellcode:
 
  image1.Invalidate;
  case ComboBox1.ItemIndex of
  0 : Panel1.PaintTo(Image1.Canvas,0,0);
  1 : Panel2.PaintTo(Image1.Canvas,0,0);
  2 : Panel3.PaintTo(Image1.Canvas,0,0);
  end;

cltom 17. Okt 2007 17:04

Re: TImage Paint To mehrmals aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
*aufwärm* das Problem ist noch ungelöst und ich täte Euch um Hilfe bitten:

Hier ein kleines Testprojekt, dass das Problem zeigt:

Delphi-Quellcode:
  panel1.Width := 200 + random(100);
  panel1.height := 200 + random(100);
  image1.Width := panel1.Width;
  image1.Height := panel1.Height;
  image1.Invalidate;
  panel1.PaintTo(image1.Canvas,0,0);
Falls bequemer habe ich das Projekt angehängt.

Was nun passiert:
Beim ersten mal Aufrufen wird das Panel korrekt kopiert, bei den Folgenden Versuchen stimmt width und height nicht mehr, im image wird das Panel abgeschnitten ungeachtet der Übergabe von Height und Width.

Was muss man ändern, damit das Panel immer in der richtigen Größe rüberkopiert wird?

Danke!

cltom 18. Okt 2007 15:17

Re: TImage Paint To mehrmals aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Falls das rar-Archiv jemanden abhält, die Dateien als

bitsetter 19. Okt 2007 20:21

Re: TImage Paint To mehrmals aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

deinen Code habe ich nun so abgeändert, dass es richtig funktioniert.

cltom 22. Okt 2007 11:35

Re: TImage Paint To mehrmals aufrufen
 
Danke Dir, funktioniert so!!!

Nur zu meiner Aufklärung, wie man da draufkommt:
[ ] war eh klar, muss man doch wissen
[ ] ist nicht so trivial, kann man schon übersehen
[ ] musste selber 3 Stunden basteln


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz