Zitat von
glkgereon:
Wie genau machst du dieses Abmischen? [...] Das kann doch nicht so schwer sein!
Das ist einfacher als du denkst. Hier ein Paar Ausschnitte aus der
Unit:
Delphi-Quellcode:
//Diese Funktion wollen wir später mal aufrufen
function AddPNGToImageList(PNG: TPNGObject; Backcolor:Graphics.TColor;ImageList:TCustomImageList):Integer;
var
BMP:Graphics.TBitmap;
begin
BMP:=Graphics.TBitmap.Create;
PNGtoBitmap(PNG, BMP, Backcolor, ImageList.Width, ImageList.Height);
Result:=ImageList.AddMasked(BMP,BMP.Canvas.Pixels[BMP.Width-1,0]);
BMP.Free;
end;
//Das ist das eigentliche Abmischen
procedure PNGtoBitmap(PNG : TPNGObject; BMP : Graphics.TBitmap; BackColor : Graphics.TColor; Width, Height: Integer);
begin
BMP.PixelFormat:=pf16bit;
BMP.Width:=Width;
BMP.Height:=Height;
BMP.Canvas.Brush.Color:=Backcolor;
BMP.Canvas.FillRect(Rect(0,0,BMP.Width,BMP.Height));
if Assigned(PNG) then
PNG.Draw(BMP.Canvas,Rect(0,0,BMP.Width,BMP.Height));
end;
Natürlich könnte man das alles noch viel schöner schreiben (und vielleicht auch schneller). Aber es funktioniert und das reicht mir.