Vraag Teken lijn in c #


Ik ben nieuw bij c # en ik heb moeite om een ​​regel in een formulier te tekenen. Hier is de code die ik tot nu toe heb.

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

11
2018-03-11 20:47


oorsprong


antwoorden:


Probeer het in 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);
        }

19
2018-03-11 20:49



Dat is niet echt een vraag, want je hebt niet gezegd wat je ziet.

De juiste manier om dit te doen is in je vorm Paint gebeurtenishandler. Haal het grafische object uit de e argument. Probeer dat en laat ons weten wat je ziet.


4
2018-03-11 20:49



U zou in de Paint-gebeurtenis van het object moeten tekenen waarop u de lijn wilt tekenen. Gebruik daarom het Graphics-object in de e variabele van de EventArgs parameter van de Paint-gebeurtenis. Hier is een VB.NET-voorbeeld:

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
2018-03-11 21:36



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

en voer het uit vanuit je initializer:

 public Form1()
    {
        InitializeComponent();

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

3
2018-01-03 12:14