![]() |
AW: Für CopyRect passendes Ereignis?
@Perlsau danke Dir... Application.OnIdle Event war mir noch nicht vertraut.
An sich funktioniert es auch, die ShowMessage wird ausgegeben, aber das Bild wird nicht kopiert. Ich würde für noch ein Paar Ideen sehr dankbar... |
AW: Für CopyRect passendes Ereignis?
Wobei ist das Problem mit dem Laden aus einer Ressource?
|
AW: Für CopyRect passendes Ereignis?
Zitat:
|
AW: Für CopyRect passendes Ereignis?
Zitat:
Bleibt also zu 99,9995% ein Fehler in deinem Code. :stupid: Image.Canvas ist die "sichtbare" Zeichenfläche und Image.Picture.Canvas?, Image.Picture.Graphics.Canvas oder z.B. Image.Picture.Bitmap.Canvas ist der Canvas des internen Bildes. PS: Rate mal was TImage mit dem Canvas der Oberfläche macht, wenn es das WM_PAINT bekommt. :roll: In neueren Windowsen hat man zwar oft den Vorteil, daß sich der DesktopWindowManager (DWM) dazwischen klemmt, aber normaler Weise ist der Canvas des Fensters (und allem darauf) flüchtig. |
AW: Für CopyRect passendes Ereignis?
Zitat:
Hier wird nicht das Image1 kopiert, sondern der Desktop noch bevor meine Anwendung starten. Kann also nach dem Start im Image2 die Icons sehen die auf meinem Desktop liegen.
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Windows; const MY_MESSAGE = WM_USER + 1; type { TForm1 } TForm1 = class(TForm) Image1: TImage; Image2: TImage; Label1: TLabel; procedure FormShow(Sender: TObject); private { private declarations } procedure MyMessage(Var MSG: TMessage); message MY_MESSAGE; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormShow(Sender: TObject); begin PostMessage(Self.Handle, MY_MESSAGE, 0, 0); end; procedure TForm1.MyMessage(var MSG: TMessage); var Quelle, Ziel: TRect; begin Label1.Caption := 'Luluu'; Quelle := Classes.Rect(0, 0, 100, 100); Ziel := Classes.Rect(0, 0, 100, 100); Image2.Canvas.CopyRect(Ziel, Image1.Canvas, Quelle); end; end. |
AW: Für CopyRect passendes Ereignis?
NOCHMAL zum MITLESEN.
Das Ändern des Labels löst ein Neuzeichnen dessen Canvas aus (TLabel und TImage haben aber kein eigenes Canvas, sondern leiten die Operationen an ihren Parent weiter) Fazit: Die Form wird neu gezeichnet und schmeißt die Zeichenausgabe deines FEHLERHAFTEN Codes weg. (übermalt das wieder) Label1.Caption:=... zeichnet nicht sofort, sondern verzögert, also nach deinem Code. (quasi PostMessage WM_PAINT) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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 by Thomas Breitkreuz