首页 > 解决方案 > 如何创建透明图标的画布?

问题描述

我有一些透明图标,其大小比要添加它们的 ImageList 小。我尝试像往常一样添加它们,ImageList.AddIcon(IcoHandle);但似乎它们已缩放到 ImageList 大小。我想找到一种方法来增加具有透明颜色的 Icon 的画布,以便将其添加到 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;

标签: delphiiconsdelphi-10.3-rio

解决方案


我终于想通了......感谢大卫,肯和托宾斯从这里回答。

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;

推荐阅读