如何增加透明图标的canvas?
How can I icrease the canvas of a transparent icon?
我有一些透明图标,其尺寸小于我要添加它们的 ImageList。我尝试像往常一样使用 ImageList.AddIcon(IcoHandle);
添加它们,但它们似乎已缩放到 ImageList 大小。我想找到一种方法来增加我的图标的 canvas 透明颜色,这样它就可以在不缩放的情况下添加到 ImageList 中。这可能吗?
更新 1:
我已经按照大卫说的做了,但是图标失去了透明度...
LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
Ico.Handle:= hI;
Bmp:= TBitmap.Create;
Bmp.Transparent:= True;
Bmp.PixelFormat:= pf32bit;
Bmp.SetSize(ISize, ISize);
Bmp.Canvas.Draw(0, 0, Ico);
Pics.Add(Bmp, nil);
Bmp.Free;
我终于弄明白了...感谢 David、Ken 和 Torbins 在 here 的回答。
在设置位图大小之前,我必须将画笔样式设置为 bsClear
。 :)
LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
Ico.Handle := hI;
Bmp := TBitmap.Create;
try
Bmp.Canvas.Brush.Style := bsClear;
Bmp.SetSize(ISize, ISize);
N := (ISize - ISmall) div 2;
Bmp.Canvas.Draw(N, N, Ico);
Pics.Add(Bmp, nil);
finally
Bmp.Free;
end;
我有一些透明图标,其尺寸小于我要添加它们的 ImageList。我尝试像往常一样使用 ImageList.AddIcon(IcoHandle);
添加它们,但它们似乎已缩放到 ImageList 大小。我想找到一种方法来增加我的图标的 canvas 透明颜色,这样它就可以在不缩放的情况下添加到 ImageList 中。这可能吗?
更新 1:
我已经按照大卫说的做了,但是图标失去了透明度...
LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
Ico.Handle:= hI;
Bmp:= TBitmap.Create;
Bmp.Transparent:= True;
Bmp.PixelFormat:= pf32bit;
Bmp.SetSize(ISize, ISize);
Bmp.Canvas.Draw(0, 0, Ico);
Pics.Add(Bmp, nil);
Bmp.Free;
我终于弄明白了...感谢 David、Ken 和 Torbins 在 here 的回答。
在设置位图大小之前,我必须将画笔样式设置为 bsClear
。 :)
LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
Ico.Handle := hI;
Bmp := TBitmap.Create;
try
Bmp.Canvas.Brush.Style := bsClear;
Bmp.SetSize(ISize, ISize);
N := (ISize - ISmall) div 2;
Bmp.Canvas.Draw(N, N, Ico);
Pics.Add(Bmp, nil);
finally
Bmp.Free;
end;