![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| WIN32API |
|
|||
|
Unregistered |
Как в STATIC загрузить BMP-картинку из ресурсов программы и установить прозрачный цвет? Вообщем с загрузкой из ресурсов проблем нет (см. код ниже), а вот с установкой прозрачности...
|
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
Static Style: SS_CENTERIMAGE
Для битмапа: - если изображение меньше, чем сам контрол, то остальное место вокруг заполняется цветом первого пикселя левого верхнего угла битмапа Для иконки: - если изображение меньше, чем сам контрол, то остальное место вокруг заполняется цветом фона контрола -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| WIN32API |
|
|||
|
Unregistered |
2JoyEx
В моем изображении этот пиксель черный. Если все сделать так, как ты сказал, то пустое пространство СТАТИКА заполняется черным цветом. А мне надо, чтобы картинка стала прозрачной. Т.е. черный цвет изображения должен стать прозрачным. |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
используй тогда .ico (иконку)
в инете есть куча программ для конвертирования битмапа в .ico Добавлено @ 18:46 можно и на лету (программно) делать из .bmp иконку, но зачем?! -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| WIN32API |
|
||||
|
Unregistered |
2JoyEx
Из bmp иконку делать считаю неправильным решением. К тому же это будет немаленькая иконка. Может быть следующий вариант мне поможет? Я нашел в сети интересную процедуру DrawTransparentBitmap. Но, при применении, ничего не смог добится. Где ошибка и как исправить? Ошибка точно где-то в применении (см. ниже). Я в HDC дуб.
ПРИМЕНЕНИЕ:
|
||||
|
|||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
Проще всего сделать с помощью LoadImage (,,, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT)
Подробности смотрите в MSDN Добавлено @ 13:17 Вам нужен COLOR_3DFACE -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| WIN32API |
|
|||
|
Unregistered |
Так я именно через LoadImage (...) и делаю. А константы LR_LOADMAP3DCOLORS и LR_LOADTRANSPARENT бесполезны. Прозрачности нет!
|
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
WIN32API
Только что проверил свой вариант, т.е. то что советовал Вам. Всё работает! Вот так делайте: 1) Сделайте битмап глубиной цвета не более 8bpp (256 цветов) 2) В любом графическом редакторе измените первый пиксель (в битмапе) на тот цвет, который должен быть прозрачен 3) Для STATIC установите стили SS_BITMAP и SS_CENTERIMAGE 4) LoadImage(,,,,,LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS) 5) Через сообщение STM_SETIMAGE установите новый битмап на STATIC контрол -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| WIN32API |
|
|||
|
Unregistered |
2JoyEx
Спасибо! Все действительно работает. Вся загвоздка у меня была в глубине цвета. Еще раз спасибо! |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |