Редактор ресурсов Visual Studio 2008 раздражает PNG - PullRequest
2 голосов
/ 22 июня 2009

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 18 ноября 2009

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

IDI_DENTIFIER PNG "background.png"
чтобы:
IDI_DENTIFIER BITMAP "background.png"

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

1 голос
/ 16 июля 2014

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

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

IDB_NEWFILE BITMAP "NewFile.bmp"

изменить на

IDB_NEWFILE PNG "NewFile.png"

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

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

1 голос
/ 22 июня 2009

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

IDI_BACKGROUND  RCDATA    "background.png"

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

...