Редактор ресурсов Visual Studio 2008 раздражает PNG

У меня есть проект ресурсной DLL в VS2008, который содержит в основном изображения PNG. Каждый раз, когда я импортирую новое изображение в файл ресурсов, я получаю ошибку RC2170: файл растрового изображения не имеет формата 3.0 для каждого PNG, который ранее был в файле ресурсов.

Дело в том, что все эти требования выполнили нормально, прежде чем я добавлю новое изображение. Только после того, как я удалю все эти изображения из файла ресурсов и снова импортирую их (без изменений), он будет компилироваться.

Такое поведение повторяется для каждого нового добавляемого файла PNG, и по мере роста числа файлов PNG оно становится все более раздражающим.

Кто-нибудь испытывал что-нибудь похожее? Любое решение?

Кстати: мне на самом деле не нужен редактор ресурсов, чтобы распознавать файлы PNG как изображения, если это может решить эту проблему.


person Community    schedule 21.06.2009    source источник


Ответы (3)


Согласно этот поток, вы столкнулись с ошибкой в ​​редакторе ресурсов, которая изменяется:

IDI_DENTIFIER PNG "background.png"
to:
IDI_DENTIFIER BITMAP "background.png"

Но будьте осторожны: эти PNG-ресурсы, похоже, не загружаются в ОС до Vista при вызове через LoadImage(). Использование этого типа ресурса может ограничить ваше приложение Vista.

person Heath Hunnicutt    schedule 18.11.2009
comment
Да, изменение BITMAP на PNG в файле rc вручную решает проблему. - person bialix; 20.06.2013

Редактор ресурсов напрямую не поддерживает изображения PNG. Вы должны добавить их в виде двоичных файлов, например:

IDI_BACKGROUND  RCDATA    "background.png"

Затем вы можете использовать GDI + для загрузки их из файла ресурсов. Это объясняется в этой статье (C ++)

person StackedCrooked    schedule 21.06.2009

Я боролся с этим, но обнаружил, что (по крайней мере, в Visual Studio 2012) вы можете легко добавить файл png в качестве ресурса. В представлении ресурсов щелкните правой кнопкой мыши имя файла .rc и выберите «Добавить ресурс». Выберите тип «Растровое изображение» и нажмите «Импорт». Выберите нужный файл .png. В список ресурсов должен быть добавлен новый раздел под названием «PNG», и он должен работать так же, как ресурс BITMAP.

Иногда я видел, как это терпит неудачу - если это так, сохраните копию вашего файла png с расширением .bmp (или сохраните его как растровое изображение), а затем добавьте его как растровое изображение, как указано выше. Отредактируйте файл ресурсов, и вы увидите такую ​​строку:

IDB_NEWFILE BITMAP "NewFile.bmp"

измените это на

IDB_NEWFILE PNG "NewFile.png"

и сохраните файл. В следующий раз, когда вы посмотрите на ресурсы проекта, должен был быть создан раздел «PNG» (даже с заголовком комментария!)

Но, насколько я могу судить, файлы png с прозрачностью либо не будут отображаться правильно, либо вызовут сбой при загрузке (например, в кнопку).

person SuwaneeCreek    schedule 16.07.2014