Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Firemonkey auf Canvas eines Steuerelementes zeichnen (https://www.delphipraxis.net/191922-firemonkey-auf-canvas-eines-steuerelementes-zeichnen.html)

sko1 3. Mär 2017 12:58

Firemonkey auf Canvas eines Steuerelementes zeichnen
 
Hallo,

aus bestimmten Gründen muss ich direkt auf das Canvas eines TExpanders zeichnen.
Dass ich das im OnPaint machen muss, weiß ich, aber jetzt passiert etwas ganz merkwürdiges:

Delphi-Quellcode:
procedure TForm1.Expander1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  Expander1.canvas.BeginScene();
  Expander1.canvas.Clear(Talphacolors.Blue);
  Expander1.canvas.EndScene;
end;

Das gesamte Formular und der Expander wird blau!
Was ist denn nun los?

Nachtrag:
Wenn ich den Code verlagere nach

Delphi-Quellcode:
procedure TForm1.Expander1Painting(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  Expander1.canvas.BeginScene();
  Expander1.canvas.Clear(Talphacolors.Blue);
  Expander1.canvas.EndScene;
end;

ist das Formular blau und der Expander weiß!

Ciao
Stefan

EWeiss 3. Mär 2017 13:07

AW: Firemonkey auf Canvas eines Steuerelementes zeichnen
 
Kann ja sein das ich Blind bin aber ich sehe keinerlei unterschied zwischen beiden Schnipseln.

gruss

sko1 3. Mär 2017 13:28

AW: Firemonkey auf Canvas eines Steuerelementes zeichnen
 
Einmal der Paint - und einmal der Painting - Event

Ciao
Stefan

Harry Stahl 3. Mär 2017 17:20

AW: Firemonkey auf Canvas eines Steuerelementes zeichnen
 
Du machst direkt 2 Fehler:

1. Du musst den vom Event übergebenen Canvas verwenden
2. Du musst das übergebene ARect verwenden, um im Zeichenbereich des Objekts zu bleiben.

Und noch ein Hinweis: Letztlich verwendest Du das OnPaint-Event für Deine Zeichenausgaben. Das OnPainting-Event signalisiert Dir nur, dass das Objekt demnächst gezeichnet wird. Da kannst Du dann, wenn Dein Programmablauf das erfordert, irgendwelche vorbereitenden Sachen machen.

sko1 4. Mär 2017 13:48

AW: Firemonkey auf Canvas eines Steuerelementes zeichnen
 
Zitat:

1. Du musst den vom Event übergebenen Canvas verwenden
Danke, das war mir bisher nicht so bewusst, wenn ich schon explicit im OnPaint-Event eines Controls bin und dann explicit auch noch Expander1.canvas.... verwende, dann war für mich eigentlich klar dass ich auf dem richtigen Canvas zeichne!

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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