web-dev-qa-db-ja.com

C#で線を引く

私はc#を初めて使用し、フォームに線を引くのに苦労しています。ここに私がこれまでに持っているコードがあります。

Graphics g;

g = this.CreateGraphics();

Pen myPen = new Pen(Color.Red);
myPen.Width = 30;
g.DrawLine(myPen, 30, 30, 45, 65);

g.DrawLine(myPen, 1, 1, 45, 65);
12
JohnB

OnPaintでお試しください

protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics g;

            g = e.Graphics;

            Pen myPen = new Pen(Color.Red);
            myPen.Width = 30;
            g.DrawLine(myPen, 30, 30, 45, 65);

            g.DrawLine(myPen, 1, 1, 45, 65);
        }
21
Bala R

あなたが見ているものをあなたが言わなかったので、それは本当に質問ではありません。

これを行う正しい方法は、フォームのPaintイベントハンドラーにあります。 e引数からグラフィックスオブジェクトを取得します。それを試して、あなたが見るものを私たちに知らせてください。

5
Jonathan Wood

線を描画するオブジェクトのPaintイベントで描画する必要があります。したがって、PaintイベントのeパラメータのEventArgs変数でGraphicsオブジェクトを使用するだけです。 VB.NETの例を次に示します。

Private Sub ExampleLinkLabel_Paint(ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.PaintEventArgs) _
                                   Handles lnkMyLinkLabel.Paint

    Dim lbl As LinkLabel = DirectCast(sender, Label)
    Dim pen1 As New System.Drawing.Pen(Color.Black, 1)
    Dim topLeft As New Point(0, 0)
    Dim topRight As New Point(lbl.Width - 1, 0)
    Dim bottomLeft As New Point(0, lbl.Height - 1)
    Dim bottomRight As New Point(lbl.Width - 1, lbl.Height - 1)

    e.Graphics.DrawLine(pen1, topLeft, topRight)
    e.Graphics.DrawLine(pen1, bottomLeft, bottomRight)
    e.Graphics.DrawLine(pen1, topRight, bottomRight)

End Sub
3
HardCode
 private void Form1_Paint(object sender, PaintEventArgs e)
    {
        ....
    }

イニシャライザから実行します。

 public Form1()
    {
        InitializeComponent();

        this.Paint += new System.Windows.Forms.PaintEventHandler(Form1_Paint);
    }
3
JanOlMajti