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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[543] 캔버스에 사용자 맘대로 모양의 선 긋기.
김태선 [jsdkts] 7971 읽음    2005-12-18 17:39
빈 폼을 띄우고 버턴을 하나 내려놓고 다음과 같이 코딩합니다.

//---------------------------------------------------------------------------
// 콜백 함수
// 결국 소스는 선이 그려질때 점이 아닌 타원으로 점을 대신합니다.
// 이 함수는 결국 선의 모양을 결정하는 것입니다.

void CALLBACK DDAProc(int x, int y, LPARAM LParam)
{
    // x, y는 선을 이룰 점이 그려질 좌표
    // 아래는 10도트 마다 원을 그려 작은 원으로 된 사선을 형성하게 만듭니다.
    if ((x % 10) == 0)
        ((TCanvas *)LParam)->Ellipse(x - 5, y - 5, x + 5, y + 5);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // wingdi.h 헤더의 LineDDA의 프로토타입 선언이 잘못되어 있어 교정하기 위한 목적.
    FARPROC  procDDA = (FARPROC)DDAProc;

    // 대각선을 긋는다. Canvas의 포인트를 넘겨 콜백함수에서 받아서 그리게 한다.
    LineDDA(10, 10, ClientWidth-10, ClientHeight-10, procDDA, (long)Canvas);
}

LineDDA는 재미있는 API 함수이고 도움말을 참고하시면 됩니다. 사실 볼것도 없지만...
이것은 다양한 응용이 가능할 것 같은, 알아두면 좋은 내용 같군요.
한국델파이 개발자 모임의 이정욱님의 델파이 팁을 빌더로 바꿔서 실험해보고 올립니다.

+ -

관련 글 리스트
543 캔버스에 사용자 맘대로 모양의 선 긋기. 김태선 7971 2005/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.