Рисование линии в С#
Я новичок в С#, и я изо всех сил пытаюсь нарисовать линию в форме. Вот код, который у меня есть.
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);
}