3

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

4

1 回答 1

4

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

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

如果 Delphi 6 没有Draw“DrawingStyle”的重载,那么:

ImageList1.BkColor := clHighlight;
ImageList1.DrawingStyle := dsNormal;
ImageList1.Draw(Canvas, 0, 0, 0);
于 2011-12-13T13:29:27.773 回答