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
[49455] Re:layer 개념.. Rectangle 도와주세요.
장성호 [nasilso] 1642 읽음    2007-05-30 09:45
먼저 시도1이 안되는 이유가 궁금하네요


질문 
        brush->style=bsClear 가 왜안먹힐까?

답변
      Canvas->Brush->Style=bsClear로 설정하고 Rectangle를 그렸죠
      Brush Style을 화면에 그리는 내용에 대한 것인데
      bsClear는  그릴때
                - 안쪽에 내용을 삭제하는것이 아니라
                - 안쪽에 내용을 가만히 둔다,건드리지 않는다는 뜻입니다.
      즉 bsClear로 해서 그리면 안쪽에는 아무변화가 없습니다.


그럼 사각형만 나타나려면 어떡해 해야하는가?
Transparent 속성을 이용합니다.

Transparent 는 Default로 bitmap의  (0,0)의 맨첫번째 pixcel에 있는 색상과
같은 색상을  모두 부모색상으로 바꿔줍니다.

만약 내가 원하는 색상을 Transparent하시려면
아래와 같이 하시면 됩니다.
   Image1->Picture->Bitmap->TransparentColor=clYellow;
   Image1->Transparent=true;


그러므로 사각형만 그리고 투명하게 하려면
사각형부분을 제외한 다른부분의 색상이 모두 똑같아야 합니다.

그러므로 전체를  흰색이나 단색으로 Brush->Style=bsSolid 로 그려주므로 전체 이미지를 초기화 한후
그위에 배경색과 다른색상으로 사각형으로 Brush->Style=bsClear 로  그려주면 됩니다.

그럼....



romio 님이 쓰신 글 :
: 목적: 이미지 위에 Rectangle (사각형) 영역표시 하기;
:
: 시도1: imge1 콤포넌트에 스트림을 이용해서 JPEG이미지를 뿌렸습니다.
:         이런 경우 같은 image1-> canvas 를 이용해서 rectangle 그릴려니 에러가 뜹니다.
:
: 시도2:그래서 Layer 개념으로 같은 크기의 image2 컴포넌트를 덮어서..
: rectangle를 그렸더니 image1의 JPEG 이미지가 가려지더군요..
: 그래서 canvas->brush->style=bsClear;를 했는데 안 먹히더라구요... (JPEG이미지를 흰색으로 덮여진상태) property 설정 순서가 있는 걸까요? ^^;;;
: 또, Image2->transparent=true; 했더니 rectangle 안쪽면만 JPEG 이미지가 보이고 외곽쪽은 계속 흰색..
: 시도3: shape 컴포넌트를 이용하여 rectangle 을 그려서 만족하는 결과를 얻었습니다.
:
: 질문: 시도2에서 brush->style=bsClear 왜 안먹힐 까요..?
: Image 컴포넌트에서 rectangle pen 부분만 나타내고 전체를 투명하게( 이미지에 특정역역표시결과) 얻을 수 있을까요?

+ -

관련 글 리스트
49453 layer 개념.. Rectangle 도와주세요. romio 1502 2007/05/30
49455     Re:layer 개념.. Rectangle 도와주세요. 장성호 1642 2007/05/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.