2011/06/16

C++ Builder XE 에서 TImage 에 PNG 파일 보여주기

RadStudio XE 버전부터는 PNG 파일과 GIF 그리고 RAW 파일을 기본 지원한다고 하여 테스트 해 보았다.



실제 TImage 의 Picture 프로퍼티의 파일 열기 대화상자에서 보여지는 파일 형식은 GIF, PNG, JPEG, BMP, TIFF, ICO, EMF, WMF 파일이다.

지정된 형식의 파일을 열기시도하면 정상적으로 TImage 에 보여지게 된다.



이 부분을 코드 상으로 처리하기 위해 Picture 컨트롤의 LoadFromFile 함수를 이용하여 보았지만 PNG 파일을 열기 시도하면 "Unknown picture file extension(.PNG)" 라는 에러 메시지를 만났다.



XE 버전부터는 WIC 를 이용하여 PNG 와 다른 포맷에 대한 지원을 하고 있다. 그래서 아래와 같은 코드로 PNG 파일을 출력하는데 성공하였다.



#include "Graphics.hpp"

TWICImage *pWIC = new TWICImage();
pWIC->LoadFromFile( fullPath );

imgMain->Picture->Assign( pWIC );

delete pWIC;





위 코드로 PNG 이미지를 TImage 에 보여주는 것은 성공을 하였지만 TImage 의 Canvas 에 접근하는 작업을 시도하면 "Can only modify an image if it contains a bitmap" 이라는 에러 메시지를 만나게 된다. TImage 의 Canvas에 작업을 하려면 Bitmap 으로 변환을 하여 TImage 에 할당해 주어야 한다.



#include "Graphics.hpp"

TWICImage *pWIC = new TWICImage();
pWIC->LoadFromFile( fullPath );

Graphics::TBitmap *pBMP = new Graphics::TBitmap();
pBMP->Assign( pWIC );

imgMain->Picture->Assign( pBMP );

delete pBMP;
delete pWIC;




Windows Imaging Component(WIC) on MSDN

Windows Imaging Component Download from MSDN

TWICImage Document on Embarcadero docwiki<

Original Post : http://neodreamer-dev.tistory.com/547

No comments :

Post a Comment