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

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[235] 원의 중심과 반지름을 이용한 원 그리기
김시환 [godson2] 61174 읽음    2013-07-19 11:22

Canvas 에 원을 그리기 위해서 Ellipse 멤버함수를 사용하는데 이 함수가 사각형에 내접하는 원을 그리는 방식이라
타원이 그려지게 되죠..

그래서 원의 중심점과 반지름 위치의 점을 이용하여 원을 그리는 방식으로 변경하는 코드를 만들어 보았습니다.

void Calcu_Circle_Position(POINT Center, POINT Radius, POINT* StartPos, POINT* EndPos)
{
    int dx, dy, radius ;

    dx = (Radius.x - Center.x) * (Radius.x - Center.x) ;
    dy = (Radius.y - Center.y) * (Radius.y - Center.y) ;
    radius = sqrt((double)(dx+dy)) ;

    StartPos->x = Center.x - radius ;
    StartPos->y = Center.y - radius ;
    EndPos->x   = Center.x + radius ;
    EndPos->y   = Center.y + radius ;
}

함수 사용방법은

POINT Center, Radius, StartPos, EndPos ;

/****************
Center : 마우스 첫 클릭 포인트
Radius : 마우스의 두번째 클릭 포인트
*****************/

Calcu_Circle_Position(Center, Radius, &StartPos, &EndPos) ;
Canvas->Ellipse(StartPos.x, StartPos.y, EndPos.x, EndPos.y) ;

이렇게 사용하시면 됩니다.
장성호 [nasilso]   2013-07-26 11:50 X
다음과 같은 식으로 함수인터페이스를 제공해

함수 두번호출 필요없이 한번에 그리게 하면 어떨까요?

DrawCircle( TCanvas *pCanvas , float fCenterX , float fCenterY,float fRadius);

둘리.CSIEDA [dooly386]   2014-01-03 06:26 X
Ellipse의 사각형을 조절하면 안될까요? 원을 그리도록.

+ -

관련 글 리스트
235 원의 중심과 반지름을 이용한 원 그리기 김시환 61174 2013/07/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.