![]() |
Deckkraft von Bitmap unregelemässig erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
ist es Leute möglich, die Deckkraft (Opacity) von Bitmap unregelmässig zu erstellen Im Anhang ist die Deckkraft regelmässig Ich möchte aber auf eine Seite mehr Transparent und die Seite gegenüber ganz wenig |
AW: Deckkraft von Bitmap unregelemässig erstellen
Dann verwende eine Alpha-Maske
|
AW: Deckkraft von Bitmap unregelemässig erstellen
Das mit der Alpha-Maske funktioniert so:
Bei einem Standard-Bitmap mit 24 Bit hast du für jeden Pixel jeweils ein (unsigned) Byte (3 * 1 Byte = 3 * 8 Bit = 24 Bit) für die Kanäle Red, Green und Blue zur Verfügung und kannst damit jeweils die Werte von 0 bis 255 speichern. Bei einem 32-Bit-Bitmap kommt noch ein vierter Kanal hinzu, der sogenannte Alpha-Kanal. In ihm kann pro Pixel auch noch seine Sichtbarkeit angegeben werden, wobei 255 für voll sichtbar und 0 für unsichtbar steht. Wenn du also einen Verlauf der Transparenz haben willst, dann sollte dein Bitmap ein 32-Bit-Bitmap sein und die entsprechenden Werte für die Transparenz im Alpha-Kanal haben. Dann musst du dir überlegen, wie du das Bitmap ausgibst. Wenn du es auf einer Canvas bzw. einem anderen Bitmap ausgeben willst, dann kannst du dein Bild Pixel für Pixel durchgehen und (entsprechend dem jeweiligen Alpha-Wert) jeden Pixel auf deinen Hintergrund blenden. Wenn deine Form selbst halbtransparent sein soll (wie es der Screenshot vermuten lässt), dann kannst du mit ![]() mfg |
AW: Deckkraft von Bitmap unregelemässig erstellen
Oder gleich mit PNG's arbeiten die semitransparenz von Haus aus unterstützen.
|
AW: Deckkraft von Bitmap unregelemässig erstellen
Wobei man da wohl eine Fremd-Library für die PNG-Unterstützung verwenden müsste (oder bieten die neueren Delphi-Editionen eine entsprechende Unterstützung von Haus aus?).
|
AW: Deckkraft von Bitmap unregelemässig erstellen
Ja, die neueren Delphis können PNG.
|
AW: Deckkraft von Bitmap unregelemässig erstellen
Das bekannte
![]() |
AW: Deckkraft von Bitmap unregelemässig erstellen
Zitat:
-------------------------------- Zitat:
Ich erstelle die Opacity so :
Delphi-Quellcode:
Kann jemand mir weiter helfen?
procedure TForm1.Button1Click(Sender: TObject);
const TransparentGrad = 0.5; VAR oldColor, aColor: TColor; x,y: Integer; tmpColor1, tmpColor2: TColor; begin Image3.Picture.Assign(Image2.Picture); Image3.AutoSize := True; for x := 0 to Image1.Picture.Width do for y := 0 to Image1.Picture.Height do begin oldColor := Image1.Canvas.Pixels[x,y]; aColor := Image2.Canvas.Pixels[x,y]; Image3.Canvas.Pixels[x,y] := RGB(Trunc(Max(0,GetRValue(oldColor) - TransparentGrad * GetRValue(aColor))), Trunc(Max(0,GetGValue(oldColor) - TransparentGrad * GetGValue(aColor))), Trunc(Max(0,GetBValue(oldColor) - TransparentGrad * GetBValue(aColor)))); end; end; |
AW: Deckkraft von Bitmap unregelemässig erstellen
Zitat:
|
AW: Deckkraft von Bitmap unregelemässig erstellen
Na, überleg doch mal, was du an dieser Stelle machst:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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