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
[51471] Re:폼의 일부를 투명하게...
장성호 [nasilso] 1446 읽음    2007-12-04 22:03
간단하게..

1. TImage 대신 TBitmap을 이용하세요

2. Form의 MouseMove때 Form의 Canvas에 그리는 내용 그대로
Bitmap의 Canvas에 그려주시구요

3. Form의 OnPaint 이벤트에서
Canvas->Draw(0,0,bitmap); 해주시구요

minimize와  다른윈도우에 덮인것의 차이에 대해선 정확하게는 잘모릅니다만

AlphaBlend 가 true인경우
  다른윈도우에 덮였을 경우에는 FormPaint이베트가 발생하지 않더군요
  그런데 minimize상태에서 올라올때는 Paint이벤트가 발생하더군요
(AlphaBlend=false 인 경우는 다름)

여기에 무슨 원인이 있는것 같네요
추측컨데.. DC가 Form이 아니라 DesttopWindow라던지..
..

그럼..


권기식.with☆ 님이 쓰신 글 :
: 안녕하세요?
:
: 폼의 일부분을 마우스로 드래그해서 투명하게 만들려고 합니다.
: 어두운 밤에 모니터의 불빛이 밝아서 최소한의 화면만 보게 하는 프로그램인데요...
:
: Form에 Transparent Color(clRed)를 지정하고 Ctrl 버튼을 누르고 마우스를 드래그하면 해당 영역의 Canvas을 붉은색 사각형으로 그려주었습니다.
:
: 일단 원하는대로는 잘 되는데요...
: 문제는 ESC를 눌러 폼을 최소화했다가 다시 최대화할 때 그려진 사각형들이 지워진다는 것입니다.
: 폼이 뒤로 갔다가 앞으로 올 때는 괜찮은데 말이죠.
:
: TImage에 그려보니 Repaint가 잘 되는 것 같은데... 깔끔하지 않은 것 같습니다 ^^;
:
: TRect를 배열이나 동적할당하여 기억하였다가 Repaint시 다시 그려주는 방법도 생각해봤습니다.
:
: 문제는 왜 가려졌다가 나타나면 정상적으로 보이는데 최소화되었다가 커지면(리사이즈) 다 지워지냐는 것입니다.
:
: 도움 부탁드립니다~ ^^
:
: 실행파일과 소스를 첨부합니다.

+ -

관련 글 리스트
51468 폼의 일부를 투명하게... 권기식.with☆ 1168 2007/12/04
51471     Re:폼의 일부를 투명하게... 장성호 1446 2007/12/04
51481         감사합니다. 권기식.with☆ 1071 2007/12/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.