Можно ли заставить растровое изображение Delphi 6 TImageList нарисовать прозрачные пиксели определенного цвета? - PullRequest
3 голосов
/ 13 декабря 2011

У меня есть приложение Delphi 6, которое владелец рисует иконки в строке TListBox вместе с текстом.Стиль TListBox установлен на lbOwnerDrawVariable.У меня проблема, когда элемент выбран.Цвет выделения, используемый списком для изменения цвета фона выбранной строки, делает значок ужасным, потому что значок имеет прозрачные пиксели (моё предположение, основанное на видимых доказательствах), и эти пиксели меняются на цвет фона, тем самым разрушаяизображение.Есть ли простой способ заставить прозрачные пиксели рисовать определенный цвет, чтобы я мог устранить эту проблему?Я использую метод TImageList.Draw(), чтобы нарисовать значок на холсте TListBox.

1 Ответ

4 голосов
/ 13 декабря 2011

Вы можете использовать метод Draw с DrawingStyle, установленным на 'dsNormal' и установив любой цвет, который вы хотите использовать в качестве фона, на 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);
...