Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 | ||
ну его <пип>...
![]() |