奇怪的DrawRectangle和DrawLine

本文关键字:DrawLine DrawRectangle | 更新日期: 2023-09-27 18:18:49

我想在PictureBox上画几个数字。我期望下面的代码将用它的全尺寸对角线绘制一个矩形,但它没有。直线没有连接到矩形的右下角。我很好奇到底出了什么问题?

    private void onPaint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        Pen p = new Pen(System.Drawing.Color.Black, 2);
        g.DrawRectangle(p, 50, 10, 400, 400);
        g.DrawLine(p, 50, 10, 400, 400);
    }

奇怪的DrawRectangle和DrawLine

DrawRectangle中,最后两个参数是宽度和高度。在DrawLine中,最后两个参数是final x和final y。

所以只要把起始的x和起始的y加到宽度和高度上就得到了对角线:

g.DrawRectangle(p, 50, 10, 400, 400);
g.DrawLine(p, 50, 10, 450, 410);

同样,如果你声明了一个矩形,那么你可以在不改变绘图代码的情况下改变其值。比如:

    private void onPaint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        Rectangle rc = new Rectangle(50, 10, 400, 400);
        using (Pen p = new Pen(System.Drawing.Color.Black, 2))
        {
            g.DrawRectangle(p, rc);
            g.DrawLine(p, rc.Left, rc.Top, rc.Right, rc.Bottom);
        }
    }