Einzelnen Beitrag anzeigen

tomkupitz

Registriert seit: 26. Jan 2011
323 Beiträge
 
Delphi 11 Alexandria
 
#1

Bitmap 32Bit und Alpha Kanal

  Alt 19. Sep 2018, 14:53
Hallo,

ich habe eine Bitmap erstellt:
Code:
  tmp:=TBitmap.Create;
  tmp.SetSize(bmp.Width, bmp.Height);

  tmp.PixelFormat:=pf32Bit;
  tmp.AlphaFormat:=afDefined;

  ...

  tmp.Free;
Der Alphakanal gibt die Transparenz für den jeweiligen Pixel an.

Wenn ich nun die Bitmap so bearbeite
Code:
 
  Line: PRGBQuadArray;

  ...

  R:=0; G:=0; B:=0; Alpha:=0;
 
  for y:=0 to tmp.Height-1 do
  begin
    Line:=tmp.ScanLine[Y];

    for x:=0 to tmp.Width-1 do
    begin
      Line[X].rgbRed:=R;
      Line[X].rgbGreen:=G;
      Line[X].rAgbBlue:=B;
      Line[X].rgbReserved:=Alpha;
    end;
  end;
ist sie bei Ausgabe mit
Code:
Canvas.Draw(0, 0, tmp);
völlig tranzparent. Bei einer Bearbeitung mit
Code:
 
  Line: PRGBQuadArray;

  ...

  R:=255; G:=255; B:=255; Alpha:=0;
 
  for y:=0 to tmp.Height-1 do
  begin
    Line:=tmp.ScanLine[Y];

    for x:=0 to tmp.Width-1 do
    begin
      Line[X].rgbRed:=R;
      Line[X].rgbGreen:=G;
      Line[X].rAgbBlue:=B;
      Line[X].rgbReserved:=Alpha;
    end;
  end;
ist sie bei Ausgabe mit
Code:
Canvas.Draw(0, 0, tmp);
nur halbtranzparent.

Habe ich da ein Verständnisproblem?

Beste Grüße
  Mit Zitat antworten Zitat