Danke
hat mich noch ein wenig fummelei gekostet, aber jetzt funktioniert es.
für diejenigen, die das gleiche Problem haben... hier wie ichs gelöst habe:
Delphi-Quellcode:
procedure TForm.Button8Click(Sender: TObject);
var
x, y : Integer;
rgn, rgn2 : THandle;
function icotobmp(Icon: TIcon): tbitmap;
begin
result := TBitmap.create;
result.Width := Icon.Width;
result.Height := Icon.Height;
result.Canvas.Draw(0, 0, Icon);
end;
begin
rgn := CreateRectRgn(0, 0, pnl.Width, pnl.Height);
with icotobmp(img.Picture.Icon) do
begin
for x := 0 to img.Width do
for y := 0 to img.Height do
begin
if Canvas.Pixels[x, y] = Canvas.Pixels[0, 0] then
begin
rgn2 := CreateRectRgn(x, y, x+1, y+1);
CombineRgn(rgn, rgn, rgn2, RGN_XOR);
DeleteObject(rgn2);
end;
end;
Free;
end;
setwindowrgn(pnl.Handle, rgn, True);
deleteObject(rgn);
end;
Nachtrag: wie ich inzwischen herausgefunden habe, ist Icon.Width/Height nur ein 'Näherungswert'... deshalb aufpassen was man an Höhe und Breite des Icons hat... wenn man direkt ein Bitmap hat ist das eh egal