Редактор ресурсов Visual Studio 2008 раздражает с помощью PNG
У меня есть ресурсный проект DLL в VS2008, который содержит в основном изображения PNG. Каждый раз, когда я импортирую новое изображение в файл ресурсов, я получаю ошибку RC2170: файл растрового изображения не является форматом 3.0 для каждого PNG, который ранее был в файле ресурсов.
Дело в том, что все эти iamges были выполнены нормально, прежде чем я добавлю новое изображение. Только после того, как я удалю все эти изображения из файла ресурсов и снова импортирую их (без изменений), он будет скомпилирован.
Такое поведение повторяется для каждого нового добавленного файла PNG, и с ростом числа файлов PNG это становится все более раздражающим.
Кто-нибудь испытывал что-то похожее? Любое решение?
Кстати, мне на самом деле не нужен редактор ресурсов для распознавания файлов PNG как изображений, если это может решить эту проблему.
3 ответа
Согласно этой теме, вы испытываете ошибку в редакторе ресурсов, которая изменяется:
IDI_DENTIFIER PNG "background.png"
чтобы:IDI_DENTIFIER BITMAP "background.png"
Но будьте осторожны: кажется, что эти ресурсы PNG не загружаются в ОС до Vista при вызове через LoadImage()
, Использование этого типа ресурса может ограничить ваше приложение Vista.
Редактор ресурсов напрямую не поддерживает изображения PNG. Вы должны добавить их в виде двоичных файлов, например:
IDI_BACKGROUND RCDATA "background.png"
Затем вы можете использовать GDI+ для загрузки их из файла ресурсов. Это объясняется в этой статье (C++)
Я боролся с этим, но обнаружил, что (по крайней мере, в Visual Studio 2012) вы можете легко добавить файл png в качестве ресурса. В представлении ресурсов щелкните правой кнопкой мыши имя файла.rc и выберите "Добавить ресурс". Выберите тип "Bitmap" и нажмите "Import". Выберите нужный файл.png. В ваш список ресурсов должен быть добавлен новый раздел под названием "PNG", и он должен работать так же, как ресурс BITMAP.
Я видел этот сбой в некоторых случаях - если это так, сохраните копию вашего png-файла с расширением.bmp (или сохраните его как растровое изображение), а затем добавьте его как растровое изображение, как указано выше. Отредактируйте файл ресурсов, и вы увидите следующую строку:
IDB_NEWFILE BITMAP "NewFile.bmp"
измените это на
IDB_NEWFILE PNG "NewFile.png"
и сохраните файл. В следующий раз, когда вы посмотрите на ресурсы проекта, должен быть создан раздел 'PNG' (даже с заголовком комментария!)
Но, насколько я могу судить, png-файлы с прозрачностью либо не будут отображаться правильно, либо вызовут сбой при загрузке (например, в кнопку).