Erase beim TPanel verhindern
-
So hiho mein Problem ist zwar in Delphi, aber da das auch VCL ist, könnte es ja sein dass das im Borland C++-Builder genauso funktioniert.
Mein Prob: ich habe ne OpenGL-Grafik, welche ich auf einem TPanel draufmalen lasse. Soweit so gut. Nur passiert es jetzt, dass beim Programmstart meine Zeichnung, welche ich in der OnShow das erste mal darstelle, von der Standardhintergrundfarbe des TPanels wieder übermalt wird. Kann man das abstellen irgendwie?
MfG Pellaeon
-
Hallo
Entweder OnPaint anstatt OnShow verwenden, oder zusätzlich noch ein TImage in das Panel legen und dort zeichnen.
bis bald
akari
-
die OnPaint der Form ist ja überschrieben, das Panel an sich hat keine OnPaint zum überschreiben. Ich werd mal das mit dem TImage probieren, THX

-
klappt nicht TPanel ist kein Fenster-Element, hat also kein Handle
Hast sonst keiner eine Idee?
-
Hallo
TPanel ist kein Fenster-Element, hat also kein Handle
TPanel ist abgeleitet von TWinControl...

Wenn du ein TImage in das TPanel setzt. und alle Zeichenaktionen über das Canvas des TImage ausführst, werden alle Zeichenoperationen auch nach Überdeckungen wieder automatisch aufgefrischt.
bis bald
akari
-
ah ja sry ich meinte TImage und nicht TPanel an der Stelle. TImage ist in der DelphiVCL kein Fenster-Elemenet. Ich benutze aber das Handle in dem Programm brauch also eins.
-
Hallo
dann benutzt doch das Handle von dem Panel. Das TImage hat doch kein Exklusiv-Recht an dem Panel, du kannst z.B. auch noch weitere Controls in das Panel setzten, die das Image überdecken.
bis bald
akari
-
Habs grad probiert. Wenn ich das Handle vom Panel und dem HDC vom TImage benutze, meckter OpenGL, funktioniert also nicht.
Gibts in der VCL keine Nachricht/Methode, welche von der Frm aufgerufen wird, wenn ein Steuerelement gezeichnet wird, sodass ich das eine Steuerelement sozusagen rausfiltern kann?
-
Hallo,
TImage hat doch ein Canvas und das hat auch ein Handle welches man benutzen könnte.
-
Das Handle in Canvas ist ein HDC, ich brauch aber 2 Handle: HDC und HWND