Canvasプロパティの使い方(図形描画の方法)

                                      椙山 浩一

サンプルファイル(Sample.lzh)

線や図形はCanvasプロパティを持つオブジェクト上にのみ描画できます。主なオブジェクトとしてはFormPaintBoxImage等です。

以下に、一例としてサンプルプログラムのソースを記述します。フォーム全体を白色に塗りつぶし、その上に5つのボタンを配置して、それぞれのボタンのOnClickイベントに以下のように記述します。

Unit1.cpp

//---------------------------------------------------------------------------

//赤色の実線を描画します

void __fastcall TForm1::Button1Click(TObject *Sender)

{

        Canvas->Pen->Color = clRed;        //線の色を指定します

        Canvas->Pen->Style = psSolid;      //線の種類を指定します

        Canvas->Pen->Width = 2;            //線の太さを指定します

        Canvas->MoveTo(50,100);            //始点の座標です   

        Canvas->LineTo(200,100);           //終点の座標です

}

//---------------------------------------------------------------------------

//青色の点線を描画します

void __fastcall TForm1::Button2Click(TObject *Sender)

{

        Canvas->Pen->Color = clBlue;

        Canvas->Pen->Style = psDot;        //点線を指定します

        Canvas->Pen->Width = 1;            //実線以外では太さは1しか指定できません

        Canvas->MoveTo(50,150);

        Canvas->LineTo(200,150);

}

//---------------------------------------------------------------------------

//緑色の楕円を描画します

void __fastcall TForm1::Button3Click(TObject *Sender)

{

        Canvas->Pen->Color = clGreen;

        Canvas->Pen->Style = psSolid;

        Canvas->Pen->Width = 3;

        Canvas->Ellipse(250,5,350,200);    //楕円を描画

                                           //楕円は四角形に外接するように描画されます

}

//---------------------------------------------------------------------------

//黒色の点線で四角を描画します

void __fastcall TForm1::Button4Click(TObject *Sender)

{

        Canvas->Pen->Color = clBlack;

        Canvas->Pen->Style = psDashDot;    //一点鎖線を指定します

        Canvas->Pen->Width = 1;

        Canvas->Rectangle(370,10,440,200); //四角形を描画

                                           //対角線状に座標を指定します(x1,y1,x2,y2

}

//---------------------------------------------------------------------------

//図形をクリアします

void __fastcall TForm1::Button5Click(TObject *Sender)

{

        Canvas->Pen->Color = clWhite;

        Canvas->Brush->Color = clWhite;

        Canvas->Rectangle(0,0,Form1->Width,Form1->Height);

                       //フォーム全体を白で塗りつぶします

                       //フォーム全体に四角形を描画し、その中を白で塗りつぶします

}

//---------------------------------------------------------------------------