编程语言
首页 > 编程语言> > c#-System.Drawing.Graphics.DrawRectangle绘制比指定大1px的矩形

c#-System.Drawing.Graphics.DrawRectangle绘制比指定大1px的矩形

作者:互联网

这里的代码非常简单…只需在窗体的OnPaint例程中绘制应为64×64矩形的矩形即可:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    e.Graphics.DrawRectangle(Pens.Black, new Rectangle(32, 32, 64, 64));
}

我进行了以下屏幕截图,并测量了65×65的正方形.

只想知道是什么原因导致额外的1px宽度/高度,以及如何解决?

编辑…

我知道我可以使用Rectangle.Inflate(-1,-1)进行修复…更重要的是,我想知道为什么GDI / GDI使矩形比指定的宽/高1px,在这种情况下,请给出原因使用Inflate修复程序.

解决方法:

每个边框边缘的中心都绘制在矩形实际边缘的左侧或下方.对于单像素边框,顶部边缘和底部边缘绘制在矩形的实际边缘下方.如果在窗体的顶部绘制这样的矩形,则该矩形的顶部为0,并且顶部边缘绘制在0像素和1像素之间的空间中.如果该矩形的高度为64像素,则底部为64,底部边缘绘制在64像素至65像素之间.如果将笔的粗细设置为2,则会发现底部边缘的另一半在63到64像素之间绘制.垂直边缘也同样,即,对于第一个奇数像素向右绘制,而对于偶数则向左绘制.

标签:graphics,gdi,gdi-2,c,winforms
来源: https://codeday.me/bug/20191029/1957285.html