| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Динамическое изменение TIcon |
| Автор: Рубик 2.8.2011, 11:58 |
| Здравствуйте. Нужно рисовать индикатор на TIcon динамически и присваивать его значение TrayIcon.Icon. Проблема в том, что у TIcon отсутствует Canvas, и рисовать на нем нельзя. Фон для TIcon хранится в TImageList. Я делаю так: получаю ImageList.GetBitmap, затем на этом TBitmap рисую что нужно, делаю ImageList.Insert и затем ImageList.GetIcon, где и получаю иконку. Но при этом почему-то теряется прозрачность (иконка изначально 32-битная). У ImageList стоит ColorDepth = cd32Bit. Вопрос в том, как корректно нарисовать на 32-битной иконке (TIcon), получаемой из ImageList что-нибудь, например, прямоугольник. Delphi 2010, Win 7 |
| Автор: CodeMonkey 2.8.2011, 15:39 |
| На иконке рисовать нельзя. Рисовать надо на Bitmap. Прозрачность задаётся двумя способами - по маске, либо по контрольному цвету. |
| Автор: Рубик 2.8.2011, 16:24 | ||
Для 32-битных иконок прозрачность задается иначе (4-ым байтом), насколько я понимаю. |
| Автор: ZBugz 10.8.2011, 07:36 |
| А если заменить Ticon на Timage ? Добавлено через 59 секунд И еще попробывать поставить TrayIcon.Icon.Transparent:=True; |
| Автор: Чучмек 12.8.2011, 21:59 | ||
Дальше сам разберешься |