Thema: Delphi TPanel transparent ?

Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: TPanel transparent ?

  Alt 3. Jun 2005, 07:35
da es eine Komponente ist, ist da nix mit aufrufen sonder du musst eine Instanz erstellen.
[Edit]
So ganz 100% funktioniert das bei mir auch nicht.
Ich habe einen Button auf mein Form gepackt, darüber dieses Panel und auf das Panel dann leicht versetzt einen zweiten button (so das der Button auf dem Panel einen Teil von Button 1 überdeckt).
Beim ersten Klick auf Button2 (der auf dem Panel) erscheint Button1 während der Button2 gedrückt ist über Button2.
[/Edit]

[Edit2]
Ich hab noch ein wenig probiert und das Problem herausgefunden. Sobald sich ein Control unter dem Panel neu zeischnet, zeischnet sich das Panel danach nicht neu. Wenn man also unter dem Panel einen Button hat und davon die Caption ändert dann malt sich der Button neu über die Controls die auf dem Panel legen (als würde der Button unter dem Panel über allem drüber liegen).

Und wenn man einen Alphaeffekt erzielen will funktioniert das auch nur beim ersten mal denn beim Repaint des Panels wird der Untergrund nicht zuvor gemalt. Somit würde man bei 50% Transparenz beim nächsten Repaint die bereits geblendet Fläsche nocheinmal blenden (in meinem Beispiel hab ich mit Rot geblendet und somit wird das Rot immer intensiver bis man nicht mehr sieht was unter dem Panel ist.)
[/Edit2]

[Edit3]
Ich hab mal das Beispielproject angehängt. In die Paint Methode des neuen Panels hab ich noch das Alphablend eingefügt um das ganze zu verdeutlichen
Delphi-Quellcode:
  LBitmap := TBitmap.Create;
  LBitmap.Width := 1;
  LBitmap.Height := 1;
  LBitmap.Canvas.Pixels[0,0] := clRed;
  LBlendStruct.BlendOp := AC_SRC_OVER;
  LBlendStruct.BlendFlags := 0;
  LBlendStruct.SourceConstantAlpha := 127;
  LBlendStruct.AlphaFormat := 0;
  windows.AlphaBlend(Canvas.Handle, 0, 0, Width, Height, LBitmap.Canvas.Handle, 0, 0, LBitmap.Width, LBitmap.Height, LBlendStruct);
  LBitmap.Free;
ZipDatei einfach entpacken und Projekt starten (compilieren).
[/Edit3]
Angehängte Dateien
Dateityp: zip example_137.zip (4,4 KB, 268x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat