我可以强制Delphi 6 TImageList位图将其透明像素绘制为某种颜色吗?

时间:2011-12-13 11:38:29

标签: delphi bitmap transparency ownerdrawn tlistbox

我有一个Delphi 6应用程序,所有者在TListBox行中绘制图标以及一些文本。 TListBox的样式设置为lbOwnerDrawVariable。我遇到的问题是选择一个项目。列表框用于更改所选行的背景颜色的高亮颜色使图标看起来很糟糕,因为图标具有透明像素(我基于可见证据的假设),并且这些像素被更改为背景颜色从而破坏图片。是否有一种简单的方法可以强制将透明像素绘制成某种颜色,这样我就可以消除这个问题?我使用TImageList.Draw()方法在TListBox画布上绘制图标。

1 个答案:

答案 0 :(得分:4)

您可以使用Draw方法将DrawingStyle设置为'dsNormal',并将您希望用作背景的颜色设置为BkColor

ImageList1.BkColor := clHighlight;
ImageList1.Draw(Canvas, 0, 0, 0, dsNormal, itImage);

如果Delphi 6没有'{1}}重载'DrawingStyle',那么:

Draw