C++ Builder/TCanvas > 원을 그려서 반경 방향으로 선을 그립니다.

운영 환경
C++ Builder XE4

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::drawRadialLine(double angle_deg)
{
    TRect R = Image1->ClientRect;

    double radius = (R.right - R.left) / 2;
    int center_x = (R.left + R.right) / 2;
    int center_y = (R.top + R.bottom) / 2;

    Image1->Canvas->MoveTo(center_x, center_y);

    int to_x = radius * Cos(angle_deg * M_PI / 180.0);
    int to_y = radius * Sin(angle_deg * M_PI / 180.0);
    to_x += center_x;
    to_y += center_y;
    Image1->Canvas->LineTo(to_x, to_y);
}

void __fastcall TForm1::drawOnImage(void)
{
    // 1. draw circle
    TRect R = Image1->ClientRect;
    //                      X1,     Y1     X2       Y2
    Image1->Canvas->Ellipse(R.left, R.top, R.right, R.bottom);

    // 2. draw line in radial direction
    drawRadialLine(/*angle_deg=*/30.0);
    drawRadialLine(/*angle_deg=*/140.0);
    drawRadialLine(/*angle_deg=*/250.0);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    drawOnImage();
}
//---------------------------------------------------------------------------



TImage의 크기는 W250 x H250.

0도 정의: 중심점에서 오른쪽으로 수평선 그리기
거기에서 시계 방향으로 각도를 취하고 있다.

좋은 웹페이지 즐겨찾기