![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
suxxor |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
Нужно создать иконку (HICON) и отобразить её в трее.
Значок получаю так: (взято отсюда)
на выходе получается иконка с серым фоном и чёрным текстом, в чём проблема? Это сообщение отредактировал(а) suxxor - 18.3.2012, 21:30 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну а какой по твоему должен быть? в коде чёрный текст так и задан, а серый фон может получиться, если иконку на черный накладывать, например, на второй буфер, который, по умолчанию черный изначально Добавлено через 8 минут и 59 секунд или на белый, смотря какой фон нарисован в иконке, по идее - WHITENESS, т.е. белый независимо от выбранной кисти, значит прозрачность его с 0x9F даст серый или грязный на любой темный цвет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
suxxor |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
неважно какой цвет текста, интересует именно: что изменить в приведённой функции для получения прозрачного фона?
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если коротко, то альфу здесь это 9F в 53 строке, поставишь FF, будет полностью прозрачный, только он будет и правда полностью прозрачный, т.е. невидимый ![]() поставь в цикле фильтр: если исходный цвет белый, значит поставить ему альфу FF, иначе - 0 или можешь полупрозрачность на текст наложить: вместо нуля что-нить вроде 7F если тебе нужна простая иконка, без полутонов, то заморачиваться с BITMAPV5HEADER не было смысла, обычная иконка, формируемая двумя растрами (через BITMAPINFOHEADER), и так имеет прозрачные зоны -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Не получается сделать иконку прозрачной (маска прозрачности - черная)
при 16 битном цвете:
Присоединённый файл ( Кол-во скачиваний: 15 ) ![]() |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
После таких манипуляций (по другому это никак не назовешь):
получилось вот это: Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 5 Всего: 64 |
Я не помню где лежит альфа канал. Если последний, то можно попробовать так:
Это сообщение отредактировал(а) artsb - 12.2.2013, 08:50 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Alca, а какой у тебя там biCompression?
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Alca |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Попробывать сделать с BI_BITFIELDS ? |
||||||
|
|||||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Да, думаю это будет правильней, чтобы не подбирать "эфемерную" маску прозрачности. Только обращай внимание, что каждая маска размером с DWORD, и тут нет комментария по поводу, должна ли быть четвертая маска в случае с наличием "альфы", или ее следует формировать взаимоисключением остальных трех. Возможно придется делать и так и так, пока не будет найдено верное решение. Не проще ли было использовать 8- и менее- битный формат для предоставления флагов? Там же цветов: раз-два и обчелся, их можно бы было держать отдельно в палитре, которая в таком случае располагается после BITMAPINFOHEADER. Там это простые RGBQUAD, у которых нет такой неопределенности с альфой. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
есть какой-то просто пример? |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Понятных примеров не нашел.
Здесь все то же самое, что ты сделал, но вместо bmi - выделяй память на
BITMAPINFOHEADER заполняешь как раньше, только ставишь 8 бит, а таблицу цветов ниже заполняешь цветами, которыми будешь использовать. Когда создашь DIB, у тебя будет указатель на байтовый массив - аналогичный тому, который у тебя сейчас 16-битный, расчитывай ширину строки и заполняй каждый байт номером цвета из той таблицы цветов, что ты заполнял при создании. Соответственно, альфу уже можно задать только в таблице цветов, поэтому, если два пиксела имеют одинаковые цвета, но разные альфы, индексы у них тоже разные. Для обычных картинок это работает, но будет ли в этом случае использоваться альфа - не знаю, не проверял. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |