2009-06-21 3 views
2

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

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

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

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

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

ответ

1

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

IDI_BACKGROUND RCDATA "background.png" 

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

3

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

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

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

+0

Да, ручная замена BITMAP на PNG в rc-файле решает проблему. – bialix

1

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

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

IDB_NEWFILE BITMAP "NewFile.bmp"

изменить его

IDB_NEWFILE PNG "NewFile.png"

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

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

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