Как программно создать «яркую» и «серую» версию иконки? - PullRequest
3 голосов
/ 10 января 2010

В приложении win32 мне нужна кнопка со значком, который выглядит серым, когда кнопка отключена, и «ярче», когда мышь наводится.

Я знаю, что могу создать три растровых изображения с помощью редактора иконок, но, поскольку значок можно выбирать и загружать с диска, я хотел бы создать две другие версии программно.

Итак, начиная с дескриптора изображения, я бы хотел:
- Создайте новое изображение со всеми цветами, преобразованными в серый.
- Создайте новое изображение со всеми цветами, смещенными на белый или желтый.

Можно ли это сделать с помощью Win32 API-вызовов?

Примеры на любом языке приветствуются.

Ответы [ 2 ]

1 голос
/ 10 января 2010

Может быть, старой доброй функции DrawState будет достаточно. (По какой-то причине он теперь указан как доступный только из Win2000, что не соответствует действительности.)

А может и нет, и в этом случае вы можете использовать SetColorAdjustment функцию.

0 голосов
/ 10 января 2010

Если значок выбран пользователем, вы контролируете формат? Если нет, вы, вероятно, захотите включить библиотеку изображений или внешний процесс, такой как DevIL или Imagemagick, который обрабатывает больше форматов, чем, вероятно, API Microsoft.

...