図形の描画
このページではCanvasオブジェクトに図形を描くメソッドについて調べてみます。
| メソッド | 機能 |
| Arc | 弧を描く |
| Chord | 弦を描く |
| Ellipse | 楕円を描く |
| LineTo | 線を引く |
| MoveTo | 線の始点を決める |
| Pie | 扇形を描く |
| Polygon | 多角形を描く |
| Rectangle | 長方形を描く |
| RoundRect | 角の丸い長方形を描く |
直線を引くには
例
Canvas.MoveTo(X0, Y0);
Canvas.LineTo(X1, Y1);
中心と半径をパラメータとして円を描くには
例
Canvas.Ellipse(X0-r,Y0-r,X1+r,Y1+r);
中心と辺の長さをパラメータとして正方形を描くには
例
Canvas.Rectangle(X0-r/2,Y0-r/2,X1+r/2,Y1+r/2);
図形を消すには
CopyModeプロパティをcmSrcEraseとして、同じ図形を描きます。つぎの軌跡を描く方法もcmSrcEraseを使用しています。
マウスカーソルを押しながら移動したときの軌跡を描くには
マウスイベントとCopyModeプロパティを使って軌跡を描画します。
例
{ マウスが押されたとき }
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
p0.X := X; // 始点(p0: TPoint)
p0.Y := Y;
m_mousedown := True; // マウスが押された
end;
{ マウスが離された }
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
m_mousedown := False; // マウスが押されていない
p1.X := X; // 終点 (p1: TPoint)
p1.Y := Y;
drawLine; // 直線を引く
end;
{ 直線を引く }
procedure TForm1.drawLine;
begin
if m_mousedown = True then
begin
Canvas.MoveTo(p0.X, p0.Y);
Canvas.LineTo(p1.X, p1.Y);
end;
end;
{ マウスが移動したとき }
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Canvas.CopyMode := cmSrcErase; // ここがポイント
p0.X := p1.X; // それまでの終点を始点とする
p0.y := p1.Y;
p1.X := X; // 新しい終点
p1.Y := Y;
drawLine; // 線を引く
end;