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 파일을 출력하는데 성공하였다.
위 코드로 PNG 이미지를 TImage 에 보여주는 것은 성공을 하였지만 TImage 의 Canvas 에 접근하는 작업을 시도하면 "Can only modify an image if it contains a bitmap" 이라는 에러 메시지를 만나게 된다. TImage 의 Canvas에 작업을 하려면 Bitmap 으로 변환을 하여 TImage 에 할당해 주어야 한다.
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
실제 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
Labels:
C++ Builder XE
,
png
,
tbitmap
,
TImage
,
TistoryOldPost
,
TWICImage
,
WIC
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment