2009-06-21 3 views
2

대부분 PNG 이미지가 포함 된 VS2008 리소스 DLL 프로젝트가 있습니다. 새 이미지를 리소스 파일로 가져올 때마다 RC2170 오류가 발생합니다. 비트 맵 파일은 이전에 리소스 파일에 있던 모든 PNG에 대해 3.0 형식이 아닙니다.Visual Studio 2008 리소스 편집기가 PNG로 인해 성가신니다

새로운 이미지를 추가하기 전에 모든 iamges가 정상적으로 완료되었습니다. 리소스 파일에서 모든 이미지를 제거하고 다시 가져 오면 (변경되지 않음) 컴파일됩니다.

이 동작은 추가되는 모든 새로운 PNG 파일에 대해 반복되며 PNG 파일의 수가 증가함에 따라 점점 더 성가 시게됩니다.

누구나 비슷한 경험이 있습니까? 어떤 해결책?

BTW : PNG 파일을 이미지로 인식 할 필요가 없습니다.이 문제가 해결 될 수 있습니다.

답변

1

리소스 편집기는 PNG 이미지를 직접 지원하지 않습니다. 다음과 같이 이진 파일로 추가해야합니다.

IDI_BACKGROUND RCDATA "background.png" 

그런 다음 GDI +를 사용하여 리소스 파일에서로드 할 수 있습니다.

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

하지만 조심 :이 PNG 자원이는

3

this thread에 따르면, 당신은 변경 리소스 편집기에서이 문제를 경험이다 this article (C++)에 설명되어 있습니다 LoadImage()을 통해 호출 할 때 Vista 이전 OS에서로드하지 않는 것 같습니다. 이 리소스 유형을 사용하면 응용 프로그램이 Vista로 제한 될 수 있습니다.

+0

예, rc 파일에서 수동으로 BITMAP을 PNG로 변경하면 문제가 해결됩니다. – bialix

1

저는이 문제로 어려움을 겪었지만, (Visual Studio 2012에서는) 적어도 리소스로 png 파일을 쉽게 추가 할 수 있다는 것을 알았습니다. 리소스 뷰에서 .rc 파일 이름을 마우스 오른쪽 단추로 클릭하고 "리소스 추가"를 선택하십시오. 유형 '비트 맵'을 선택하고 '가져 오기'를 클릭하십시오. 원하는 .png 파일을 선택하십시오. "PNG"라는 리소스 목록에 새로운 섹션을 추가해야하며 BITMAP 리소스처럼 작동해야합니다.

본 적이 있습니다. 이 경우가 실패합니다 - 그렇다면 png 파일의 복사본을 .bmp 확장명으로 저장하거나 비트 맵으로 저장 한 다음 위와 같이 비트 맵으로 추가합니다. 리소스 파일을 편집하면 다음과 같은 행이 표시됩니다.

IDB_NEWFILE PNG "NewFile.png"

하고 파일을 저장하는

IDB_NEWFILE BITMAP "NewFile.bmp"

변화를. 당신이 볼 다음에 프로젝트의 리소스 'PNG'섹션이 만들어 져야합니다 (주석 헤더 포함)

하지만 투명성이있는 png 파일은 제대로 표시되지 않거나로드 될 때 충돌을 일으킬 수 있습니다. (예를 들어, 버튼으로).