Нарисуйте линию в C # - PullRequest
       17

Нарисуйте линию в C #

12 голосов
/ 11 марта 2011

Я новичок в 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);

Ответы [ 4 ]

20 голосов
/ 11 марта 2011

Попробуйте в 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);
        }
5 голосов
/ 11 марта 2011

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

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

3 голосов
/ 03 января 2012
 private void Form1_Paint(object sender, PaintEventArgs e)
    {
        ....
    }

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

 public Form1()
    {
        InitializeComponent();

        this.Paint += new System.Windows.Forms.PaintEventHandler(Form1_Paint);
    }
3 голосов
/ 12 марта 2011

Вы должны рисовать в событии 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
...