빈 폼을 띄우고 버턴을 하나 내려놓고 다음과 같이 코딩합니다.
//---------------------------------------------------------------------------
// 콜백 함수
// 결국 소스는 선이 그려질때 점이 아닌 타원으로 점을 대신합니다.
// 이 함수는 결국 선의 모양을 결정하는 것입니다.
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 함수이고 도움말을 참고하시면 됩니다. 사실 볼것도 없지만...
이것은 다양한 응용이 가능할 것 같은, 알아두면 좋은 내용 같군요.
한국델파이 개발자 모임의 이정욱님의 델파이 팁을 빌더로 바꿔서 실험해보고 올립니다.
|