Moin!
Also ich hab mir echt Mühe gegeben, aber mir ist der Effekt mit den weißen Randpixeln gar nicht gelungen
Beim Zeichnen von Icons mach ich generell einen Bogen um
VCL, aber ich habs mal mit versucht^^
Das Ergebnis meiner Spielerei, hoffe es is was brauchbares bei.
MFG Sun
Delphi-Quellcode:
function IconToBitmap(const Icon:HIcon; const Color:TColor; BMP:TBitmap):Boolean;
var II:TIconInfo;
begin
Result:=False;
If BMP=nil then Exit;
If not GetIconInfo(Icon, II) then Exit;
try
BMP.Handle:=II.hbmColor;
BMP.Canvas.Brush.Color:=Color;
BMP.PixelFormat:=pf24bit;
Result:=DrawIconEx(BMP.Canvas.Handle, 0, 0, Icon, BMP.Width, BMP.Height, 0, BMP.Canvas.Brush.Handle, DI_NORMAL);
except
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
var MyIconH:HIcon;
MyIcon:TIcon;
MyBMP:TBitmap;
begin
MyIconH:=ExtractIcon(0, 'F:\Programme\Mozilla Firefox\Firefox.exe', 0);
If MyIconH<=1 then Exit;
DrawIconEx(Canvas.Handle, 10, 10, MyIconH, 32, 32, 0, Brush.Handle, DI_NORMAL);
MyIcon:=TIcon.Create;
MyIcon.Handle:=MyIconH;
Canvas.Draw(42, 10, MyIcon);
MyBMP:=TBitmap.Create;
IconToBitmap(MyIconH, Self.Color, MyBMP);
Canvas.Draw(74, 10, MyBMP);
MyIcon.Free;
MyBMP.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Color:=Random(16777216);
end;