Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Einzelne Komponenten semitransparent zeichnen (https://www.delphipraxis.net/62654-einzelne-komponenten-semitransparent-zeichnen.html)

eisblock 7. Feb 2006 16:51


Einzelne Komponenten semitransparent zeichnen
 
Hallo!
Ich habe auf einem Image ein Panel. Dieses ist weiß und soll halbtransparent gemacht werden (wie man ganze Forms mit Alpha transparent machen kann), aber eben nur dieses Panel.
Weis jemand, wie ich das machen kann?
MfG eisblock

eisblock 7. Feb 2006 17:19

Re: Einzelne Komponenten semitransparent zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Falls es weiterhilft: es würde mir auch schon reichen, einen rechteckigen Bereich meines Hintergrund-Bitmaps mit einer höheren Helligkeit einzufärben, aber wenn das Panel dann wieder unsichtbar werden soll, müsste ich bei dieser Methode statt dessen die Helligkeit wieder normalisieren.
(Beispiel siehe angehängtes Bild)

Khabarakh 7. Feb 2006 17:23

Re: Einzelne Komponenten semitransparent zeichnen
 
Ohne eigene oder Fremdkomponenten wird das nicht funktionieren.
Allerdings finde ich deinen Weg, das Bitmap direkt zu manipulieren, um Einiges besser als ein darübergelegtes Panel.

eisblock 7. Feb 2006 17:37

Re: Einzelne Komponenten semitransparent zeichnen
 
also so wie auf http://www.dsdt.info/tipps/?id=653 beschrieben.
Aber wie binde ich die Prozedur dann ein?

eisblock 7. Feb 2006 18:26

Re: Einzelne Komponenten semitransparent zeichnen
 
Habe die Prozedur jetzt mal so umgeschrieben, dass man sie für Rechteckige Bereiche nutzen kann.
(kann man sicher noch optimieren)

Delphi-Quellcode:
procedure Helligkeit(C:TCanvas; Faktor:Real; x,y,x2,y2: integer);
var Color: LongInt;
  tmp1, tmp2, R, G, B: Integer;
begin
  with C do
    for tmp1:= ClipRect.Left to x2 do
      for tmp2:= ClipRect.Top to y2 do
      begin
       Color:=ColorToRGB(Pixels[tmp1+x,tmp2+Y]);
       R := Round(GetRValue(Color)*Faktor);
       G := Round(GetGValue(Color)*Faktor);
       B := Round(GetBValue(Color)*Faktor);
       if R>255 then R:=255;
       if G>255 then G:=255;
       if B>255 then B:=255;
       Pixels[tmp1+x,tmp2+Y]:=RGB(R,G,B);
     end;
end;
Beispiel für Einbindung:
Delphi-Quellcode:
Helligkeit(canvas,1.2,50,50,150,150);
1.2 steht für den Helligkeitsfaktor (größer als 1: heller, kleiner als 1: dunkler)
50,50 stehen für die Werte x und y, bei denen das hellere oder dunklere Rechteck beginnt,
150,150 stehen für die Endwerte x und y, bei denen das Rechteck aufhört.

Nils_13 7. Feb 2006 18:35

Re: Einzelne Komponenten semitransparent zeichnen
 
@eisblock: Das funktioniert nicht. Man muss ein TImage nehmen und es über das TImage zeichnen. Ist aber kompliziert ... .

SirThornberry 7. Feb 2006 18:37

Re: Einzelne Komponenten semitransparent zeichnen
 
ein TImage mit Alphatransparenz hatte ich ja schonmal gepostet.

eisblock 7. Feb 2006 18:41

Re: Einzelne Komponenten semitransparent zeichnen
 
also bei mir funktionierts, auch wenn ich es direkt aufs Form anwende. Aber es ist halt nur Canvas, also wenn ich ein anderes Form davor schiebe, ist es wieder weg.

Khabarakh 7. Feb 2006 18:41

Re: Einzelne Komponenten semitransparent zeichnen
 
Zitat:

Zitat von Nils_13
@eisblock: Das funktioniert nicht. Man muss ein TImage nehmen und es über das TImage zeichnen. Ist aber kompliziert ... .

Ich verstehe kein Wort, kannst du das bitte erläutern :gruebel: ?

Nils_13 7. Feb 2006 18:43

Re: Einzelne Komponenten semitransparent zeichnen
 
@Khabarakh: quatsch geschrieben...

@eisblock: Dafür gibt es das OnPaint Ereigniss der Form.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Seite 1 von 2  1 2      

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