【发布时间】:2019-08-11 23:32:01
【问题描述】:
德尔福。
我有一个包含使用 alpha 通道的 PNG 图片的 ImageList(TImageList 或 DevExpress 的 TcxImageList)。图片的RGB部分是一个黑色方块。 Alpha 通道包含真实图片的形状。我想改变黑色方块的颜色,同时保持 alpha 通道中的形状。 (所以最终我改变了图片形状图标的颜色。)
我尝试了很多方法,但都没有成功。我尝试更改列表的属性,并将 RGB 和 alpha 分开导出。
TImageList:掩码未导出。如果我执行 SaveToFile,它会保存一个 0 字节的文件,并且 Replace 还说掩码的大小不正确(0*0 px)
BMPimg := TBitmap.Create;
BMPmask := TBitmap.Create;
Try
TImageListHack(il1).GetImages(0, BMPimg, BMPmask);
BMPimg.Canvas.Brush.Color := clRed;
BMPimg.Canvas.FillRect(TRect.Create(0, 0, BMPimg.Width, BMPimg.Height));
il1.Replace(i, BMPimg, BMPmask);
End;
Finally
BMPimg.Free;
BMPmask.Free;
End;
TcxImageList:将图片+蒙版加载到BMPimg中,蒙版是黑色方块而不是BMPmask中的形状。
BMPimg := TBitmap.Create;
BMPmask := TBitmap.Create;
Try
il1.GetBitmap(i, BMPimg);
il1.GetMask(i, BMPmask);
BMPimg.Canvas.Brush.Color := clRed;
BMPimg.Canvas.FillRect(TRect.Create(0, 0, BMPimg.Width, BMPimg.Height));
il1.Replace(i, BMPimg, BMPmask);
Finally
BMPimg.Free;
BMPmask.Free;
End;
如何在 imagelist 的 PNG 图像中保留 alpha 通道的同时更改前景色?
【问题讨论】:
标签: delphi png alpha imagelist