Рисование линии в С#

Я новичок в С#, и я изо всех сил пытаюсь нарисовать линию в форме. Вот код, который у меня есть.

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);

Ответ 1

Попробуйте в 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);
        }

Ответ 2

Это не вопрос, потому что вы не сказали, что видите.

Правильный способ сделать это в форме Paint обработчика событий. Получите графический объект из аргумента e. Попробуйте это и сообщите нам, что вы видите.

Ответ 3

Вы должны рисовать событие Paint объекта, на котором вы хотите нарисовать линию. Поэтому просто используйте объект Graphics в переменной e из параметра EventArgs события Paint. Вот пример 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

Ответ 4

 private void Form1_Paint(object sender, PaintEventArgs e)
    {
        ....
    }

и запустите его из вашего инициализатора:

 public Form1()
    {
        InitializeComponent();

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