C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[40222] Re:Re:Re:GraphicEx 9.9 컴포넌트 추가하는 방법좀 부탁해요.
WARSHIP [warship] 1281 읽음    2005-05-19 10:25
자 처음부터 이야기를 다시 해야겠군요..

이미지 화일에는 많은 포맷이 존재하지요?
그것의 궁극적인 목적은 용량은 작으면서 화질은 최대한 유지 하는것입니다. ( 압축 )
(절대적인 목적은 아닙니다. 벡터화라던지 다른이유도 있긴 합니다.)
그리고 위와같은 이유로 수많은 포맷이 있지요.

하지만 변하지 않는점은 화면에 그림을 그리기 위해서는
순수한 데이타가 필요합니다. 압축되지 않은 화일이죠.

그럼 GraphicEX 이것은 무엇이냐..
이건 압축을 풀어주기만 하는 라이브러리 입니다.
예를 들어 jpg 는 zip 화일이라고 생각하시고
GraphicEX를 사용해서 jpg의 압축을  푸시면
화면에다가 뿌려줄수 있는  데이타가 나온다고 생각하세요. 
( 이게 압축안된 BMP화일이라고 생각하시면 됩니다. 용량 무지 크지요? )
( 그리고 보통 래스터(raster)한다고 하더군요 )

그럼 화면은 어떻게 보이게 하느냐.
이건 이미 빌더에 포함되어 있습니다 TImage 이죠. 외부 컴포넌트로 Graphic32도 있습니다.
이것들은 raster된 순수 이미지를 받아들여 화면에 뿌려주고 조작할 수 있게 해주는 라이브러리입니다.

고로 결론이자 핵심은
-> GraphicEX로 압축 풀고
-> TImage등의 컴포넌트를 폼등에 집어넣고
-> 압축풀린 데이타를 TImage에게 넘겨준다..

그럼 어떻게 넘겨주느냐!

/* 폼 위에 TImage 컴포넌트를 올려놓았고 그것의 Object Inspector(?)->name 속성이 "img" 라고 했을때. */
TPNGGraphic *png = new TPNGGraphic();
png->LoadFromFile("야시시.png"); /* 여기서 압축이 풀리게됨 */
img->Assign(png); /* img 는 png로부터 압축안된 순수 데이타를 넘겨받는다 */
delete png;

이렇게 하시면 되겠습니다 @_@;
( 단순 이 4줄을 보여줄려고 이런 소리를 늘어놨냐고 돌날라오지는 않을지 ^^; )

/* 그리고 확실한 에러 처리를 위해서라면 이런방식을 써 보시는 것도 괜찮을거 같습니다 */
/* 이게 정석이라고는 말하지 않겠습니다 ^^; */
#include <memory>

try{
     auto_ptr<TPNGGraphic> png(new TPNGGraphic());
     png->LoadFromFile("야시시2.png");
     img->Assign(png.get());
}
catch(Exception &e) {
     Messege~~~
}

이렇게 하시면 어떤 경우에라도 new를 통해 할당된 메모리가 새는 일은 막으실 수 있습니다.

+ -

관련 글 리스트
40207 GraphicEx 9.9 컴포넌트 추가하는 방법좀 부탁해요. pili 975 2005/05/18
40208     Re:GraphicEx 9.9 컴포넌트 추가하는 방법좀 부탁해요. WARSHIP 1302 2005/05/18
40212         Re:Re:GraphicEx 9.9 컴포넌트 추가하는 방법좀 부탁해요. 1527 2005/05/18
40222             Re:Re:Re:GraphicEx 9.9 컴포넌트 추가하는 방법좀 부탁해요. WARSHIP 1281 2005/05/19
40237                 답변 감사합니다.^^ pili 958 2005/05/20
40239                     Re:답변 감사합니다.^^ WARSHIP 1112 2005/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.