図形の描画
このページでは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;