C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 FAQ
C++Builder Programming FAQ
[3] [MULTIMEDIA] 캔버스에 그린 그림이 지워지는 문제
박지훈.임프 [cbuilder] 18071 읽음    2000-06-12 00:00
/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에서 사용
가능한 다양한 페인트 함수들을 보실 수 있습니다.

+ -

관련 글 리스트
3 [MULTIMEDIA] 캔버스에 그린 그림이 지워지는 문제 박지훈.임프 18071 2000/06/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.