Hi!
Ich habe ein Bitmap was als *.bmp Datei vorliegt.
Ich möchte das Bitmap auf ein TBitmap32-Objekt kopieren und die Farbe clFuchsia soll Transparent sein. (Also der Hintergrund, denn ich eher zeichne soll durchgucken).
Von
hier habe ich mir die Procedure abgeändert:
Ich habe turboPASCALs Demo so abgeändert, das es statt einem PNG-Image eine Bitmap einlist und die 1. Farbe als Transparenzfarbe nimmt. Wenn die 1. Farbe schwarz war gings. Wenn die was anderes war gings nicht. (Wenn es schwarz war hat es den Pixel auf $0 gesetzt. Wenn ich ihn bei mir auf $0 setze, zeichnet es auf meinen Hintergrund das Bild und die Transparentsfarbe ersetzt es durch schwarz.)
Delphi-Quellcode:
procedure TfrmMain.SetTransparent(DstBitmap: TBitmap32;TransparentColor: TColor32);
var
PixelPtr: PColor32;
X, Y: Integer;
begin
DstBitmap.ResetAlpha;
TransparentColor := TransparentColor;
PixelPtr := PColor32(@DstBitmap.Bits[0]);
for X := 0 to (DstBitmap.Height - 1) * (DstBitmap.Width - 1) do
begin
if PixelPtr^ = TransparentColor then
PixelPtr^ := PixelPtr^ and $00FFFFFF;
Inc(PixelPtr);
end;
end;
procedure TfrmMain.MenuDraw;
var
temp32: TBitmap32;
temp : TBitmap;
PixelPtr : PColor32;
x,y:integer;
begin
temp := TBitmap.Create;
try
temp32 := TBitmap32.Create;
try
temp32.Assign(bmpBackground);
bmpMenu.Draw(0,0,temp32); //bmpMenu = TBitmap32
imgBtn.GetBitmap(0,temp); //ImageList
temp32.Assign(temp);
SetTransparent(temp32,Color32(clFuchsia));
bmpMenu.Draw(100,100,temp32);
finally
temp32.Free;
end;
finally
temp.Free;
end;
end;
edit: Bitte Beachtet, bei turboPASCALs Demo ging es mit schwarz und bei mir geht es gar nicht!