Line(Pictureなど)


Lineメソッドは線を描画します。 Delphiでは TCanvas型のプロパティを持っているコンポーネントなら TCanvasの「LineTo」メソッドを使用して線を描画できます。LineToを使う前に 「MoveTo」で描画開始位置を指定します。また, それ以外にも「Polyline」メソッドは一度にたくさんの連続する線を描画できます。「Polygon」メソッドも同じく一度にたくさんの連続する線を描画し, 最終点と開始点をつなぎ, 閉じた図形を描画します。ただ四角を描画するだけなら「FillRect」メソッド(塗りつぶされた四角), または「FrameRect」メソッド(塗りつぶされていない四角)を使用するといいでしょう。角の丸い四角形を描く場合は「RoundRect」メソッドを使います。

■ TPaintBoxに赤い三角形を描画する例 (LineTo)
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    With  PaintBox1 do  begin
      {線の色:赤}
      Canvas.Pen.Color   :=  clRed;
      {線の太さ:1}
      Canvas.Pen.Width   :=  1;
      {線のスタイル:点線}
      Canvas.Pen.Style   :=  psDot;
      {描画開始地点}
      Canvas.MoveTo((Width div 2), 0);
      {描画}
      Canvas.LineTo(0, Height - 1);
      Canvas.LineTo(Width, Height - 1);
      Canvas.LineTo((Width div 2), 0);
    end;
  end;                                             

■ TPaintBoxに三角形を描画する例 (Polyline/Polygon)
  procedure TForm1.Button2Click(Sender: TObject);
  var
    pntXY : array [0..2] of TPoint;
  begin
    With  PaintBox1 do  begin
      {線の座標}
      pntXY[0].x  :=  (Width div 2);
      pntXY[0].y  :=  0;
      pntXY[1].x  :=  0;
      pntXY[1].y  :=  Height - 1;
      pntXY[2].x  :=  Width;
      pntXY[2].y  :=  Height - 1;
      {描画}
      if  chkClosed.Checked then  begin
        Canvas.Polygon(pntXY);
      end else begin
        Canvas.Polyline(pntXY);
      end;
    end;
  end;                                             

■ TPaintBoxに四角形を描画する例 (FillRect)
  procedure TForm1.Button3Click(Sender: TObject);
  var
    Rect  : TRect;
  begin
    With  PaintBox1 do  begin
      {四角の色}
      Canvas.Brush.Color    :=  clRed;
      {四角の座標を設定}
      Rect.Left   :=  10;
      Rect.Top    :=  10;
      Rect.Right  :=  Width  -  10;
      Rect.Bottom :=  Height -  10;
      {描画}
      Canvas.FillRect(Rect);
    end;
  end;                                             

■ TPaintBoxに角の丸い四角形を描画する例 (RoundRect)
  procedure TForm1.Button3Click(Sender: TObject);
  begin
    With  PaintBox1 do  begin
      {四角の色}
      Canvas.Brush.Color    :=  clRed;
      {四角の枠の色}
      Canvas.Pen.Color      :=  clWhite;
      {描画}
      Canvas.RoundRect(0,0,Width,Height,10,10);
    end;
  end;