설명하신 내용을 생소한 점이 있어.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=75510 을 참고로 작성을 하려 하였습니다.
참고로 한 다른 예제는 오래된 것이라. 윈 API를 LRESULT OnPaint(HWND hWnd,WPARAM wParam,LPARAM lParam); 와 같은 방식으로 사용을 합니다.
HWND hWnd 를 어떻게 처리? 하는지 방법을 몰라서. 빌더에 내장된 이벤트를 사용 하였습니다.
제가 작성한 예제(?)는 첨부를 하였습니다.
화면 크기가 변경이 되었을 때, 여전히 FD2DCanvas->Refresh(); 를 사용 하였는데, 어떤 함수를 사용해야 하나요?
Refresh(); 사용하지 않으면, 폼의 크기를 변경 하면, 그려진 도형이 가로세로비율이 변경되어 찌그러집니다.
이런 찌그러짐을 없애려 하는데, 어떻게 해야 하는지 방법을 모르겠습니다.
빌더(TWx) 님이 쓰신 글 :
: 뽀뽀중 님이 쓰신 글 :
: :
: : 그림을 그린 폼 크기를 변경 하면, 그림이 찌그러지는 현상이 있어서 FD2DCanvas->Refresh(); 를 사용했습니다.
: :
: : 그런데, 첨부 파일처럼 그림을 이동후, 폼을 리사이즈 하면 이동한 그림이 원정으로 이동한것처럼 보입니다.
: : 이상태에서 다시 이동을 하면, 직전에 이동한 위치에서 이동을 하게 됩니다.
: :
: : FD2DCanvas->Refresh(); 후 원점으로 이동한 것이 아닌, 마지막 이동한 위치가 유지되도록 보이게 하려면, 어떻게 해야 하나요?
:
:
:
:
: 답변:
:
:
:
: Refresh 라는 용어 자체에 혹해서 API를 잘못 사용하고 있는 것 같은데...
:
: TDirect2DCanvas::Refresh() 는 DirectX Surface를 repaint 하는 역할을 하는 함수가 아니고...
: 2D 캔버스 Internal 객체들을 reset 하는 역할 밖에 하지 않아요. 화면 갱신 역할을 하는 함수가 아님.
:
: 화면 왼쪽을 드로잉 영역으로... 오른쪽을 Tab 영역으로 쓸거라면...
:
: 왼쪽 영역을 TPanel 상속해서 wm_size, wm_paint, wm_mousemove 등의 윈도우 메세지를 오버라이드 해서
: 행렬식을 이용해서 Zoom, Panning, Scale, Skew 등 Transformation 처리를 해주면 간단한 작업임.
:
:
:
:
:
: