Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Deckkraft von Bitmap unregelemässig erstellen (https://www.delphipraxis.net/159905-deckkraft-von-bitmap-unregelemaessig-erstellen.html)

thomas2009 18. Apr 2011 11:34

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

mkinzler 18. Apr 2011 11:35

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Dann verwende eine Alpha-Maske

patti 18. Apr 2011 11:49

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 Hier im Forum suchenUpdateLayeredWindow arbeiten.

mfg

Bernhard Geyer 18. Apr 2011 12:08

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Oder gleich mit PNG's arbeiten die semitransparenz von Haus aus unterstützen.

patti 18. Apr 2011 12:27

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?).

Phoenix 18. Apr 2011 12:30

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Ja, die neueren Delphis können PNG.

Bernhard Geyer 18. Apr 2011 12:30

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Das bekannte PNGDelphi wurde von Embaracadero gekauft und ist jetzt Bestandteil der VCL.

thomas2009 21. Apr 2011 11:41

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1095817)
Das bekannte PNGDelphi wurde von Embaracadero gekauft und ist jetzt Bestandteil der VCL.

Und wie geht es damit ?
--------------------------------

Zitat:

Zitat von mkinzler (Beitrag 1095799)
Dann verwende eine Alpha-Maske

Ich weiß nicht, wie ich die Maske programiere
Ich erstelle die Opacity so :
Delphi-Quellcode:
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;
Kann jemand mir weiter helfen?

pustekuchen 21. Apr 2011 12:37

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Zitat:

Zitat von thomas2009 (Beitrag 1096362)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1095817)
Das bekannte PNGDelphi wurde von Embaracadero gekauft und ist jetzt Bestandteil der VCL.

Und wie geht es damit ?

TPngImage!?

patti 21. Apr 2011 12:58

AW: Deckkraft von Bitmap unregelemässig erstellen
 
Na, überleg doch mal, was du an dieser Stelle machst:

Zitat:

Zitat von thomas2009 (Beitrag 1096362)
Ich erstelle die Opacity so :
Delphi-Quellcode:
      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))));

Du hast halt jetzt nicht mehr einen globalen Wert für "TransparentGrad", sondern dieser ist pro Pixel verschieden. Den Wert dafür erhältst du aus dem Alpha-Kanal deiner Bitmap.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 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