Visual Studio 2010 - приложение C ++ MFC с интерфейсом ленты - прозрачность в растровых изображениях

Я играю с небольшим приложением, созданным мастером MFC, в Visual C ++ 2010, и я просто решил поместить свое собственное растровое изображение в ресурсы, чтобы заменить растровое изображение MFC с тремя кубами, которое отображается в кнопке приложения пользовательского интерфейса ленты, также известной как «мрамор».

В оригинале в качестве цвета прозрачности использовался черный (0,0,0), но я не могу определить, что делает лента MFC (материал mfc-feature-pack) в Visual Studio 2010 для определения прозрачности растрового изображения, используемого в качестве главный значок ленты.

Свойства ленты (IDR_RIBBON) показывают Image = IDB_MAIN, а IDB_MAIN - это растровое изображение 32x32 в формате BMP, загруженное из файла на диске с именем main.bmp.

Некоторые из растровых ресурсов в этом проекте имеют то, что я ожидал: пурпурный цвет, который становится прозрачным, но основное растровое изображение MFC не использует эту цветовую схему или палитру.

Вот пример реальных результатов, которые, я надеюсь, показывают, что результаты не такие, как я хотел: alt text

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


person Warren P    schedule 29.09.2010    source источник


Ответы (2)


Может быть, полупрозрачный PNG? Знаете ли вы, что файлы BMP также могут иметь альфа-каналы?

person Kawa    schedule 29.09.2010
comment
Согласно моим различным инструментам редактирования значков, файлы BMP и PNG не поддерживают прозрачность. Возможно, это означает, что формат PNG ДЕЙСТВИТЕЛЬНО поддерживает его, но ни один из моих инструментов не поддерживает. Интересно, а как MFC сделал это до альфа-каналов? Что случилось со старым добрым пурпурным? - person Warren P; 01.10.2010
comment
Это ваши инструменты. PNG поддерживает альфа-канал с самого начала. Теперь инструменты с поддержкой альфа-BMP действительно очень редки, в основном потому, что на самом деле это просто обман с тем фактом, что растровые изображения RGB (противоположные сжатым RLE) имеют 32 бита: красный, зеленый, синий ... и альфа, обычно устанавливаемые на полную непрозрачный. - person Kawa; 02.10.2010

Вам необходимо создать 32-битное растровое изображение с альфа-каналом для прозрачности. Метод, с помощью которого я это сделал, не очень прост, но это единственное, что я смог придумать.

  • Используйте Paint.Net для преобразования исходного изображения в PNG, сохраняющий прозрачность. К сожалению, Paint.Net не поддерживает создание 32-битных растровых изображений напрямую.
  • Затем загрузите AlphaConv, который может создать 32-битное растровое изображение из файла PNG.
person Praetorian    schedule 29.09.2010