Einzelnen Beitrag anzeigen

Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 

Transparente Bitmap einfügen

  Alt 14. Okt 2004, 15:00
Hallo zusammen

Ich möchte auf einen Farbverlauf eine Bitmap mit transparentem Hintergrund kopieren:

Delphi-Quellcode:
function CreateMask(Bitmap: TBitmap): TBitmap;
var
  MaskBmp: TBitmap;
begin
  MaskBmp:= TBitmap.Create;
  with MaskBmp do try
    Assign(Bitmap);
    Mask(Bitmap.Canvas.Pixels[0, Bitmap.Height - 1]);
    MaskHandle
  except
    MaskBmp.Free;
    raise;
  end;
  Result:= MaskBmp;
end;

procedure DrawTransparent(const DestDC: HDC; const X, Y: Integer; Bitmap: TBitmap);
var
  Mask: TBitmap;
begin
  Mask:= CreateMask(Bitmap);
  try
    MaskBlt(DestDC, X, Y, Bitmap.Width, Bitmap.Height,
            Bitmap.Canvas.Handle, 0, 0,
            Mask.MaskHandle, 0, 0, MAKEROP4(MERGECOPY, SRCCOPY));
   // Zweite Variante, geht auch nicht
{  BitBlt(DestDC, X, Y, Bitmap.Width, Bitmap.Height,
        Mask.Canvas.Handle, 0, 0, SRCAND);
  BitBlt(DestDC, X, Y, Bitmap.Width, Bitmap.Height,
         Bitmap.Canvas.Handle, 0, 0, SRCINVERT);}

  finally
    Mask.Free;
  end;
end;
Aber das funktioniert nicht, der Farbverlauf ist im Hintergrund der Bitmap nicht mehr zu sehen...
Kann mir wer helfen?

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat