AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TGraphicControl transparent machen

Ein Thema von xZise · begonnen am 17. Mai 2007 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

TGraphicControl transparent machen

  Alt 17. Mai 2007, 10:13
Wie kann ich das TGraphicControl transparent machen? Ich wollte nämlich ein Label nachproggen (siehe Hier und hier)...
Aber wie bekommt man das hin?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 10:28
Hallo Fabian,

du mußt das Bit csOpaque in der Eigenschaft Delphi-Referenz durchsuchenTControl.ControlStyle löschen. Als Besitzer von Turbo Delphi verfügst du doch über die Quelltexte der VCL. Schaue am besten nach, wie es dort gemacht wurde (TCustomLabel in der Unit StdCtrls).

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 10:33
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?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 10:49
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 15:47
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?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 20:28
Zitat von SirThornberry:
Hat sich etwas geändert rufst du Invalidate auf und schon wird dein Paint wieder ausgelöst.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 22:20
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)
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 22:26
Warum TBitmap?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: TGraphicControl transparent machen

  Alt 17. Mai 2007, 22:54
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: TGraphicControl transparent machen

  Alt 18. Mai 2007, 08:52
@ 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: >> C O D E <<
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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