| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > TImageList.Draw |
| Автор: h5who 20.3.2008, 19:52 |
| В TImageList - иконки (в формате ico), 32х32. Я их где-то отрисовываю на канве, через TImageList.Draw, но отрисовка получается ужасной - лесенки, неровности. Особенно если фон темный - вообще ужас. Хороший пример, беру TPanel, указываю любой цвет, а сверху накладываю TImage с той же самой иконкой. И это все выглядит нормально. Как добиться такого же вида при отрисовке на канве? Что я делаю не так? Спасибо. |
| Автор: VICTAR 20.3.2008, 20:11 |
| TImageList не поддерживает 32 битные иконки. Поищи по форуму, тут был код, котрый позволяет исправляет эту проблему. |
| Автор: Alix 20.3.2008, 20:13 |
| возможно, тебе сюда http://forum.vingrad.ru/topic-91526.html Добавлено @ 20:17 хотя я не прав... VICTAR, вот твой код: http://forum.vingrad.ru/index.php?showtopic=174525&view=findpost&p=1270128 а нашел ты его, вероятно, http://forum.vingrad.ru/index.php?showtopic=154015&view=findpost&p=1150450:. |
| Автор: VICTAR 20.3.2008, 20:38 |
Насколько я помню, так и есть |
| Автор: h5who 20.3.2008, 21:43 |
| Спасибо, но не хочу загружать иконки в время работы программы. Я хочу на этапе разработки засунуть в ImageList иконки и потом рабоать с ними. И там кажется нужно хр-манифест подключать, что я делать не хочу. Что в таком случае посоветуете? |
| Автор: VICTAR 20.3.2008, 22:11 |
| PngImageList из PngComponents они поддерживают png с прозрачностью. |
| Автор: aktuba 20.3.2008, 23:36 |
Создать свой компонент, избавленный от указанных недостатков. Не шутка. |
| Автор: h5who 22.3.2008, 08:41 | ||
| Всем спасибо. Вообщем я сумел добиться того, что мой лист стал поддерживать 32 битные иконки. Стало теперь получше выглядеть конечно, но проблема при темном фоне сохранилась. Если фон темный, то рисуется вокруг иконок толи рамка..., шум одним словом. Рисуется так:
Что я не так делаю? |
| Автор: VICTAR 22.3.2008, 11:07 |
| h5who, прикрепи скрин, так легче будет сориентироваться. |
| Автор: h5who 22.3.2008, 12:04 |
| Прикрепил графический пример. Левые иконки - это отрисовка на канве при светлом фоне (clWindow), а правые - отрисовка при темном фоне (clHighlight). Я даже попробовал указывать соответствующий цвет ImagesList.BkColor := ... - но это не помогает, при темном фоне все рисуется как на скриншоте. |
| Автор: VICTAR 22.3.2008, 16:47 |
| А сами иконки 32-битные? Вот небольшой пример |
| Автор: h5who 22.3.2008, 19:02 |
| Нашел проблему, без решения правда. Я нашел ImageList с поддержкой 32 битных иконок: TexImageList v1.0 - Supports 32 bit Alpha Images http://cc.codegear.com/Item/21269 Он нормально добавляет иконки, а вот с выводом опять проблемы. Приведенный пример с моими иконками работает просто фантастически замечательно. Но я не хочу загружать иконки в рантайме, я хочу на момент разработки загрузить иконки в лист и потом уже их отрисовывать. Есть идеи? Спасибо. |