| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > ListView, ImageList, Icons 16-bit |
| Автор: Alca 21.1.2013, 01:51 | ||||
| Как-то криво отображаются иконки при 16-битном системном цвете. Как пофиксить? Кода много, поэтому выложу пока это, если необходим какой-то конкретный кусок, то могу дописать.
|
| Автор: Alca 21.1.2013, 04:48 | ||||
http://stackoverflow.com/questions/632622/imagelist-transparency-on-listviews
|
| Автор: feodorv 21.1.2013, 07:43 |
| Так в чём суть-то? В том. что не нужно ILC_COLOR16, а нужно ILC_COLOR? |
| Автор: Alca 21.1.2013, 12:20 | ||||
нет, в том, что надо юзать ImageList_AddMasked для прозрачности битмапа artsb, так, что ли?
Значит, сделал как писал, использовал 2 байта + ImageList_AddMasked. Получилось!! Спасибо всем. |
| Автор: artsb 21.1.2013, 13:36 | ||
Неа. Судя по Википедии, может быть три варианта:
Какой из них используется в Винде я не знаю. Нужно покопаться. Добавлено через 1 минуту и 10 секунд Или реализовать все и посмотреть, какой из них будет работать |
| Автор: Alca 21.1.2013, 13:48 | ||
У меня так работает (16/32 bit):
|
| Автор: artsb 21.1.2013, 14:24 | ||
Странно... Я себе это представлял несколько иначе (для первого случая):
|
| Автор: Alca 21.1.2013, 14:31 |
| Тестил на WinXP, Win2003 Server. artsb, если честно, то я давно не кодил гуй на чистом WinAPI, может ты и правильно сдеалал |
| Автор: artsb 21.1.2013, 14:42 | ||
Может быть |
| Автор: Alca 21.1.2013, 14:50 |
| Будет время - надо бы разобраться. Еще раз, спасибо. |
| Автор: Dem_max 23.1.2013, 06:45 | ||
А просто так не пробовал ???
без всяких байтомодификаций ??? |
| Автор: Alca 23.1.2013, 11:20 |
| Dem_max, в этом проекте есть свои нюансы, каждый битмап храниться в массиве. |
| Автор: Alca 4.2.2013, 22:49 | ||||
Не работает!! |
| Автор: Alca 4.2.2013, 22:52 | ||||
|
| Автор: Alca 4.2.2013, 22:53 | ||
| Сама функция. Все эти скрины сделаны при 16 битном цвете. Битмап так загружаю
|
| Автор: artsb 5.2.2013, 08:32 |
| Alca, можете дать ваш тестовый проект, чтобы мне не катать сначала? |
| Автор: Alca 5.2.2013, 12:33 | ||
Попробую его для начала сделать |
| Автор: artsb 5.2.2013, 15:51 | ||
Alca, а так не пробовали:
Взято отсюда: http://www.codeproject.com/Answers/129088/How-to-convert-a-bmp-of-32bppargb-to-a-bmp-of-16bp.aspx |
| Автор: Alca 5.2.2013, 17:18 | ||||
fail Добавлено через 1 минуту и 47 секунд
А где там код? |
| Автор: GremlinProg 5.2.2013, 17:24 |
А зачем он тебе? Просто загрузи 16-битный растр и скопируй его через BitBlt в 32-битный |
| Автор: artsb 5.2.2013, 17:29 | ||
ИМХО, наоборот |
| Автор: Alca 5.2.2013, 18:32 | ||
http://www.dreamincode.net/forums/topic/281612-how-to-make-bitmaps-on-menus-transparent-in-c-win32/
так?? |
| Автор: artsb 5.2.2013, 18:54 | ||
По идее, так:
Добавлено через 5 минут и 59 секунд А! Понял смысл вашего перебора. По сути, да, у вас правильно. Только не забывайте восстанавливать старые битмапы. И, наверное, не стоит брать левый верхний пиксел, как цвет прозрачности. Проверяйте именно альфа-канал: если он равен 0, то заменяйте этот пиксел на свой цвет прозрачности, иначе - ничего не делайте. Но как мне кажется, лучше эту операцию проделать с исходным изображением ещё до BitBlt(). |
| Автор: artsb 5.2.2013, 19:26 | ||
Только вот так:
|
| Автор: Alca 5.2.2013, 23:56 |
| да какая-то лажа с этой прозрачностью в 16 битном цвете |
| Автор: artsb 6.2.2013, 08:05 |
| Попробую протестить. А что конкретно не так? |
| Автор: Alca 6.2.2013, 12:36 | ||
http://forum.vingrad.ru/index.php?showtopic=348807&view=findpost&p=2546325 |
| Автор: Alca 6.2.2013, 13:32 |
| Желающим могу дать доступ через Team Viewer, в личку |
| Автор: artsb 6.2.2013, 15:01 | ||
А если так:
|
| Автор: Alca 6.2.2013, 15:11 | ||
ёптель, аллилуя, тока фон светло серый, видно, что отличается |
| Автор: artsb 6.2.2013, 15:18 |
Ну это COLOR_MENU. Меняйте на цвет фона контрола. Останется только один косяк - когда итем выделен. |
| Автор: Alca 6.2.2013, 15:29 | ||
Кстати, не замечал |
| Автор: artsb 6.2.2013, 15:33 |
Я имею ввиду, что фон картики будет отличаться от фона выделенной записи. |
| Автор: Alca 6.2.2013, 15:41 | ||
А не меню??? На другой другой теме раб стола (упрощенной) все ок! |
| Автор: artsb 6.2.2013, 15:55 |
Я так понял, что у вас используется ListView. Вот его цвет и нужно брать. По умолчанию это COLOR_WINDOW, вроде бы. |
| Автор: Alca 6.2.2013, 16:05 | ||
На дефолтой схеме все ок! Но когда начинаешь перебирать другие схемы, то тут бываеют лажи (не на всех), короче я заслал этот патч, жду, что скажут |
| Автор: Alca 8.2.2013, 11:56 |
| Получил фидбек. Написали, что это грязный хак. |
| Автор: Alca 8.2.2013, 12:20 | ||
|
| Автор: artsb 8.2.2013, 20:53 |
| Ясно. Нужно подумать как сделать. |
| Автор: Alca 12.2.2013, 15:27 | ||
ну его <пип>...
|