![]() |
TGraphicControl transparent machen
|
Re: TGraphicControl transparent machen
Hallo Fabian,
du mußt das Bit csOpaque in der Eigenschaft ![]() Gruß Hawkeye |
Re: TGraphicControl transparent machen
Ah okay... Danke, aber jatzt habe ich das Problem, dass ist ja sozusagen den Text entfernen muss, und dann neuzeichnen muss... Aber wie kann ich den Text den entfernen?
|
Re: TGraphicControl transparent machen
ein GraphicControl ist von sich aus Transparent. Im Paint deiner Componente (welches du überschreiben musst) zeichnest du dann einfach dort wo was dargestellt werden soll. Hat sich etwas geändert rufst du Invalidate auf und schon wird dein Paint wieder ausgelöst.
|
Re: TGraphicControl transparent machen
Und wie kann ich das davor "entfernen"?
Weil es geht mir darum, dass ich ja den Text löschen & neuzeichnen muss... Bisher habe ich ein Rechteck darüber gezeichnet, aber das geht ja nicht mehr, weil es dann die Transparenz zerstören würde. Oder löscht man bei Paint den gesamten Inhalt? Weil dann besteht das Problem, dass ich das alles irgendwie in Paint machen müsste (schau dir am besten mal Quelltext an.) d.h. um einen transparenten Hintergrund zu bekommen, muss ich einfach die Paint Methode überschreiben und dann Text schreiben? |
Re: TGraphicControl transparent machen
Zitat:
|
Re: TGraphicControl transparent machen
1. TBitMap hat kein Invalidate
2. Invalidate zeichnet nur neu (also eigentlich Repaint ?!) und somit nicht geeignet (außer ihr könnt mir sagen, wie ich das anstellen soll... siehe Code) |
Re: TGraphicControl transparent machen
Warum TBitmap?
|
Re: TGraphicControl transparent machen
so gehts
Delphi-Quellcode:
type
TYourControl = class(TGraphicControl) private fmeinText: String; procedure SetMeinText(AText: String); public procedure Paint(); override; published property MeinText: String read fmeinText write SetMeinText; end; procedure TYourControl.Paint(); begin Canvas.TextOut(0, 0, fmeinText); end; procedure TYourControl.SetMeinText(AText: String); begin if (AText <> fmeinText) then begin fmeinText := AText; Self.Invalidate(); end; end; |
Re: TGraphicControl transparent machen
@ mkinzler: Wie soll ich dass denn bitte sonst anstellen? Ich würde ungerne den Thread im Haupthread zeichnen lassen, und den Thread nur zum Timer benutzen.
@ SirT (auch für mkinzler): Genau da ist das Problem. In einem Thread zeichne ich immer den Text. Und den speichere ich auf einer Bitmap zwischen. Und dann zeichne ich den immer mal wieder neu. Das heißt ich müsste mir eine neue Komponente von TBitMap ableiten, um da die Paintmethode zu überschreiben. Ich würde euch beiden mal den Code vorschlagen anzusehen, weil euch dann auffallen würde, dass SirTs Variante im Post hiervor so nicht umzusetzen wäre. Oder denke ich da nur etwas verquer? [edit]Könnte ich auch rein theoretisch die Paintmethode überschreiben aber mit Paremetern? Würde er dann immernoch drauf anspringen?[/edit] PS: >> ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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