Как создать монохромную битовую маску для 32-битного растрового изображения

В Win32 обычным методом является создание монохромной растровой маски из растрового изображения для использования прозрачности, выполнив следующие действия:Это предполагает, что hdcSource - это контроллер домена памяти, содержащий исходное изображение, а hdcMask - это контроллер домена памяти, содержащий монохромное растровое изображение того же размера (так что оба имеют размер 32x32, но источник имеет 4-битный цвет, а целевой - 1-битный монохромный).Однако мне кажется, что это не работает, когда источник 32-битный цвет + альфа.Вместо монохромного растрового изображения в hdcMask я получаю полностью черную маску.Никакие биты не устанавливаются на белый (1).Тогда как это работает для 4-битного источника цвета.Мой search-foo не работает, так как я не могу найти никаких ссылок на эту конкретную проблему.Я выделил, что это действительно проблема в моем коде: то есть, если я использую исходное растровое изображение с 16 цветами (4 бита), оно работает;если я использую 32-битное изображение, получается полностью черная маска.Есть ли альтернативный метод, который я должен использовать в случае 32-битных цветных изображений?Есть ли проблема с альфа-каналом, которая переопределяет нормальное поведение описанной выше техники?Спасибо за любую помощь, которую вы можете предложить!ДОБАВЛЕНИЕ: я все еще не могу найти метод, который создает допустимое монохромное растровое изображение для моего исходного растрового изображения, созданного GDI +.Я несколько смягчил мою конкретную проблему, просто не создав монохромную битовую маску вообще, и вместо этого я использую TransparentBlt (), что, кажется, все правильно (но я не знаю, что они делают внутри, что отличается отпозволяет им правильно маскировать изображение).Было бы полезно иметь действительно хорошую рабочую функцию:Где он всегда создает допустимую маску прозрачности, независимо от глубины цвета hSource.
7 голосов | спросил Mordachai 15 +04002010-10-15T17:44:15+04:00312010bEurope/MoscowFri, 15 Oct 2010 17:44:15 +0400 2010, 17:44:15

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132