ヘッダー
C# サンプル集
 

直線を描画する

2020/11/22

→ Visual Basic のサンプルに切り替える

 

このページで紹介するサンプルは Windowsフォームアプリケーションを前提にしています。

サンプルの pictureBox1_Paint は PictureBox の Paint イベントの発生時に呼び出される前提です。そうなるようにするにはたとえば、プロパティーウィンドウでPaintイベントをダブルクリックします。

 

PictureBoxに赤い線を描画する

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 20);
    var point2 = new Point(200, 150);

    e.Graphics.DrawLine(Pens.Red, point1, point2);
}

 

 

Formに青い線を描画する

private void Form1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 20);
    var point2 = new Point(200, 150);

    e.Graphics.DrawLine(Pens.Blue, point1, point2);
}

 

 

太さを指定して線を描画する

次の例は太さ12の赤い線を描画します。

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 20);
    var point2 = new Point(200, 150);

    var pen = new Pen(Color.Red, 12);

    e.Graphics.DrawLine(pen, point1, point2);
}

 

 

点線を描画する

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(100, 10);
    var point2 = new Point(310, 10);

    var pen = new Pen(Color.Red);
    pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;

    e.Graphics.DrawLine(pen, point1, point2);
}

 

次の例は、PenのDashStyleを変更することでさまざまな点線・破線を描画します。

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var font = new Font("Verdana", 20); //Verdanaで大きさ20のフォント
    var redPen = new Pen(Color.Red, 4); //太さ4の赤いペン

    e.Graphics.DrawString("Solid", font, Brushes.Black, 10, 0);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
    e.Graphics.DrawLine(redPen, 190, 20, 400, 20);

    e.Graphics.DrawString("Dash", font, Brushes.Black, 10, 40);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
    e.Graphics.DrawLine(redPen, 190, 60, 400, 60);

    e.Graphics.DrawString("Dot", font, Brushes.Black, 10, 80);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
    e.Graphics.DrawLine(redPen, 190, 100, 400, 100);

    e.Graphics.DrawString("DashDot", font, Brushes.Black, 10, 120);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
    e.Graphics.DrawLine(redPen, 190, 140, 400, 140);

    e.Graphics.DrawString("DashDotDot", font, Brushes.Black, 10, 160);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
    e.Graphics.DrawLine(redPen, 190, 180, 400, 180);

    e.Graphics.DrawString("Custom", font, Brushes.Black, 10, 200);
    redPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
    redPen.DashPattern = new float[] { 1.0F, 1.0F, 8.0F, 1.0F }; //カスタムパターン。線・隙間・線・隙間・・・の順で長さを指定する。
    e.Graphics.DrawLine(redPen, 190, 220, 400, 220);
}

実行結果

各種点線・破線

 

 

二重線を描画する

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 10);
    var point2 = new Point(210, 210);

    var pen = new Pen(Color.Red, 8); //太さ8の赤いペン


    //線の区切りを定義する。各区間は順に描画区間、空白区間、描画区間、空白区間・・・となる。
    //この例では第1区間(描画)は0~33%, 第2区間(空白)は33~66%、第3区間(描画)は66%~100%となる。
    //結果として中央に空白のある二重線となる。
    pen.CompoundArray = new float[] {0f, 0.33f, 0.67f, 1.0f};

    e.Graphics.DrawLine(pen, point1, point2);
}

実行結果

二重線

 

 

三重線を描画する

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 10);
    var point2 = new Point(210, 210);

    var pen = new Pen(Color.Red, 8); //太さ8の赤いペン


    //線の区切りを定義する。各区間は順に描画区間、空白区間、描画区間、空白区間・・・となる。
    //この例では第1区間(描画)は0~20%, 第2区間(空白)は20~40%、第3区間(描画)は40%~60%・・・となる
    //結果として描画区間が3つある三重線になる。
    pen.CompoundArray = new float[] {0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f};

    e.Graphics.DrawLine(pen, point1, point2);
}

実行結果

三重線

 

 

カスタムな色の線を描画する

赤42 + 緑210 + 青240 の割合で合成した色で直線を描画します。赤・緑・青の各色は0~255の範囲で指定できます。

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    var point1 = new Point(10, 20);
    var point2 = new Point(200, 150);

    var pen = new Pen(Color.FromArgb(42, 210, 240), 8); //太さ8のカスタムな色のペン

    e.Graphics.DrawLine(pen, point1, point2);
}