/Q//
Canvas->Lineto 로 그린 선들은 다른창으로 가리워진 부분이 자꾸 지워지는데..
방지할 방법이 없을까요?
그리고 Canvas 의 Circle 함수가 없는지 궁금합니다.
/A//
TCanvas 클래스는 윈도우의 DC를 감싸고 있는 클래스입니다. 당연히 지워지는 것을
막기 위해서는 API에서 DC에 대해 처리하는 것과 같은 방법을 써야 합니다. 바로
OnPaint 이벤트 핸들러에서 그려줘야죠.
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->Pen->Color = clAqua;
Canvas->MoveTo(100, 100);
Canvas->LineTo(200, 200);
}
이렇게 말이죠.. 그럼 가려졌던 Canvas를 포함하는 객체(폼이나 페인트박스나 뭐든)
가 다시 그려질 필요가 있을때마다 해당 핸들러 함수가 실행되겠죠.
Circle 함수는 없습니다. 이건 원래 DC에 대한 페인팅에 관련된 API중에 원을 그리
는 함수가 없기 때문이죠. 하지만, 비슷한 걸로 Ellipse() 함수가 있구요,
이건 타원을 그리는 함수입니다. 이 타원함수는 인자로서 타원이 그려질 직사각형의
네 모서리 좌표를 받습니다. 당연히 직사각형 영역이 정사각형이면 원을 그리겠죠.
이 외에도 빌더 헬프에서 TCanvas를 찾으신후, Method를 참고하면 Canvas에서 사용
가능한 다양한 페인트 함수들을 보실 수 있습니다.
|