Q&A

  • CopyRect를 이용한 복사를 하는데요.. 이상합니다.
안녕하세요 ...  에휴 골치 덩어리가 있어서요 ㅡㅡ^ 고수 님들의 조언좀 얻고자 합니다. ㅠㅠ
CopyRect에 대해서 궁금한게 있어서요...
전체 영역이 복사 되어버리는 것에 대해 몇번 질문을 올린적이 있었는데요.........질문은 다음과 같았습니다..

컴퍼넌트1(용도가 PaintBox와 비슷한 컴퍼넌트데요.. 그냥 이렇게 부르겠습니다.)
Image1컴퍼넌트  두개가 있고요....

컴퍼넌트1의 보여지는 영역을 Image1.Canvas에 복사하는 것입니다...

그리고  문제가 되는것은 컴퍼넌트1의 화면영역 위에 걸치는 모든 컨트롤들(다른 윈도우창이나, 심지어 메신저 로그인 표시창 까지도요..)이 함께 복사 된다는 거구요..  원하는 것은 오직 컴퍼넌트1의 화면만 복사하는 것입니다..(다른 윈도우에 가려있던지 말던지 상관없이요).
코딩은 다음과 같이 하였습니다.

Image1.Canvas.CopyRect(영역,    컴퍼넌트1.Canvas,    컴퍼넌트1의 화면영역);
--> 컴퍼넌트1을  그냥 TImage컴퍼넌트나, 다른 것으로 대체하였을때 문제 없이 되는 걸로 봐서는 ...
컴퍼넌트1자체 문제인거 같은데요...  

다른 방식으로 아래 방법도 써봤지만 마찬가지입니다.
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, GetDC(컴퍼넌트1.CanVas.Handle), 0, 0, SRCCOPY);
--> 이방식 같은 경우에는 GetDC안에 컴퍼넌트1.Canvas.Handle 와 컴퍼넌트1.Handle 두가지 경우를 해봤는데요...
     전자의 경우 화면영역이 복사가 안돼구요.... 후자의 경우는 CopyRect과 같은 결과가 나옵니다....


죽겠습니다...  ㅠㅠ 해결방법좀 부탁드립니다....
위 두가지 방법외에 해결할수 있는 방법이 있는지 알고 싶습니다...

그럼 즐거운 하루 되십시요.. 꾸뻑~~~~~~
0  COMMENTS