![]() |
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 |
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) |
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. |
Re: Einzelne Komponenten semitransparent zeichnen
also so wie auf
![]() Aber wie binde ich die Prozedur dann ein? |
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:
Beispiel für Einbindung:
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;
Delphi-Quellcode:
1.2 steht für den Helligkeitsfaktor (größer als 1: heller, kleiner als 1: dunkler)
Helligkeit(canvas,1.2,50,50,150,150);
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. |
Re: Einzelne Komponenten semitransparent zeichnen
@eisblock: Das funktioniert nicht. Man muss ein TImage nehmen und es über das TImage zeichnen. Ist aber kompliziert ... .
|
Re: Einzelne Komponenten semitransparent zeichnen
ein TImage mit Alphatransparenz hatte ich ja schonmal gepostet.
|
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.
|
Re: Einzelne Komponenten semitransparent zeichnen
Zitat:
|
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 14:44 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