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
[27296] Re:[질문]투명에 대한 재질문.. ㅡㅡ;;
Julien [julien] 1248 읽음    2003-09-24 16:17
사물의 배경을 투명으로 하고자 할 때...

1 사물이 있는 부분은 어떤 색이 들어가든 상관없고 나머지부분은 흰색으로 된 이미지를 하나 만듭니다.

2 그리고 사물이 있는 부분은 흰색이고 나머지부분이 검은색으로 되어 있든 그림을 준비합니다.
이것을 마스크라고 합니다.

3 배경으로 사용할 그림을 하나 띄웁니다.
Graphics::TBitmap* bg_bmp = new Graphics::TBitmap;
bg_bmp->LoadFromFile("./back.bmp");
TRect src_rt(0,0,bg_bmp->Width,bg_bmp->Height), tgt_rt(0,0,bg_bmp->Width,bg_bmp->Height);
Canvas->CopyMode = cmSrcCopy;
Canvas->CopyRect(src_rt, bg_bmp->Canvas, tgt_rt);
delete bg_bmp;

4 다음 마스크그림을 배경위에 OR 모드로 그립니다.
Graphics::TBitmap* mask_bmp = new Graphics::TBitmap;
mask_bmp->LoadFromFile("./imagemask.bmp");
TRect src_rt(100,100,mask_bmp->Width+100,mask_bmp->Height+100),
  tgt_rt(0,0,mask_bmp->Width,mask_bmp->Height);
Canvas->CopyMode = cmSrcPaint;
Canvas->CopyRect(src_rt, mask_bmp->Canvas, tgt_rt);
delete mask_bmp;

5 마지막으로 스프라이트를 AND 모드로 마스크와 같은 위치에 그립니다.
Graphics::TBitmap* sprite_bmp = new Graphics::TBitmap;
sprite_bmp->LoadFromFile("./image.bmp");
TRect src_rt(100,100,sprite_bmp->Width+100,sprite_bmp->Height+100),
  tgt_rt(0,0,sprite_bmp->Width,sprite_bmp->Height);
Canvas->CopyMode = cmSrcAnd;
Canvas->CopyRect(src_rt, sprite_bmp->Canvas, tgt_rt);
delete sprite_bmp;

신현준 님이 쓰신 글 :
:  우선.. 단순한 다각형의 경우 특정 색에 대해 투명하게 설정을 할 수 는 있었습니다.
:
:  Picture의 Transparent속성을 True로 해주고 일정 색을 투명 처리하기 위하여

:  Image1->Canvas->BrushCopy(.......);를 사용하였습니다..
:
:  헌데.. 문제는... 좀더 복잡하게 되었습니다..
:
:  혹.. 포토샵과 같은 이미지 프로세싱 프로그램을 써보셨는지요..
:
:  만약 원이 있다면 그림자 효과등을 준다든지.. 또는.. Antialiasing등의 기등등으로 완전한 색 구분이 힘들어지게 되는 경우가 많이 있습니다...
:
:  또한 단적으로 포토샵등에서 폰트를 넣게 되면 이것을 이미지화 시킬경우 Antialiasing기능이 들어가 이 이미지를 배경은 흰색으로 하여 투명하게 할경우 이미지 컴포넌트 뒤에 짙은색이 있을경우 너무도 티가 확 나더군요.. ㅡㅡ;;
:
:  제가 너무 큰걸 생각하고 있는지는 모르겠습니다만...
:
:  이런.. 그림자 효과나 Antialiasing등의 기능으로 인한 완벽하게 이미지가 짤리지 않는 것들은 어케 해결이 되지 않을런지요...
:
:  저의 낮은 소견으로는... 가장 사용하지 않는 색(예를 들어 Red)을 배경으로 주고 이 색의 알파값을 낮추게 되면 이 색만 알파값이 줄어드는 그런 방식이 되지 않을까 합니다.. 이럴경우 그림자 효과에 들어가는 빨간 색의 알파값도 내려가지 앟을러지..
:
:  아... 이렇게 하면 다른 색의 Red또한 알파값이 낮아져 다른색을 나타내게 되는건가요?
:
:  아.. 난해 하네요.. ㅡㅡ;;
:
:  고수님들의 도움 부탁드리겠습니다..
:
:
:  참고로 그림파일 하나 올리도록 하겠습니다...

+ -

관련 글 리스트
27279 [질문]투명에 대한 재질문.. ㅡㅡ;; 신현준 731 2003/09/23
27296     Re:[질문]투명에 대한 재질문.. ㅡㅡ;; Julien 1248 2003/09/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.