2017-01-12 15 views
-1

Я пытаюсь загрузить .png Я хранил в своих ресурсах проектов, чтобы установить его в элемент управления изображением, но я не могу понять, почему. Я провел некоторое исследование, и похоже, что .png не поддерживается обычным LoadImage() - вызовом.Есть ли способ загрузить .png из моих ресурсов без использования GDI +?

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

До сих пор я только нашел ресурсы о том, как это сделать с помощью GDI + или действительно древнего кода win32-api.

Есть ли способ загрузить .png файлы изначально по сегодняшнему стандарту?

+0

Не изначально. Я бы использовал OpenCV, вы можете легко открыть bmp/​​jpg/png/tiff. – RyanP

+4

GDI + _is_ сегодняшний (ну, вчерашний) стандарт. –

+1

@RyanP: [Компонент обработки изображений Windows] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee719902.aspx) предлагает поддержку PNG через [собственный кодек] (https: // msdn .microsoft.com/EN-US/библиотека/окно/настольный/gg430027.aspx). Так что да, это очень удобно. – IInspectable

ответ

2

«Новый» способ сделать это будет Direct2D и WIC, что продемонстрировано в Windows Imaging Component and Direct2D Image Viewer Win32 Sample.

Но если остальная часть вашего приложения является основным элементом управления, Direct2D является излишним. Изображение должно быть преобразовано в растровое изображение в какой-то момент, чтобы отображаться –, будь то в вашем GPU или в памяти – и GDI + подходит для этого прецедента.

Если эти ресурсы являются значками или каким-либо другим мелким файлом (< 2mp), я бы рекомендовал встраивать ресурс в растровое изображение. Вы можете сохранить свой конвейер активов как PNG, просто добавьте шаг предварительной сборки, чтобы преобразовать ваши PNG в предварительно умноженные битовые карты BGRA и использовать LoadResource. Там are pre-built tools для удовлетворения этой потребности.

+0

Является ли WIC неспособным преобразовать в HBITMAP, что позволяет избежать необходимости Direct2D? Это звучит как странный недосмотр ... – andlabs

+0

Ни одна из функций загрузки растровых изображений не поддерживает альфа-прозрачность для файлов BMP (хотя формат файла делает). Если вам нужна альфа-прозрачность, вам придется идти с PNG. – IInspectable

+1

@andlabs, WIC может конвертировать в буфер пикселей, из которого вы можете создать 'HBITMAP', но нет. – Mitch

 Смежные вопросы

  • Нет связанных вопросов^_^