|
간단하게..
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시 다시 그려주는 방법도 생각해봤습니다.
:
: 문제는 왜 가려졌다가 나타나면 정상적으로 보이는데 최소화되었다가 커지면(리사이즈) 다 지워지냐는 것입니다.
:
: 도움 부탁드립니다~ ^^
:
: 실행파일과 소스를 첨부합니다.
|