这里非常简单的代码...只需在OnPaint
的{{1}}例程中绘制64x64矩形:
Form
我拍了下面的屏幕截图,并测量了方形,即65x65。
只是想知道是什么原因导致额外的1px宽度/高度,以及如何修复?
修改...
我知道我可以使用protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(32, 32, 64, 64));
}
进行修复...更重要的是,我想知道为什么GDI / GDI +将矩形1px渲染得比指定的更宽/更高,并且在此上下文中,给出了使用Rectangle.Inflate(-1, -1)
修复。
答案 0 :(得分:4)
每个边框边缘的中心都绘制在矩形实际边缘的左侧或下方。对于单像素边框,顶边和底边绘制在矩形的实际边缘下方。如果在窗体顶部绘制这样的矩形,则该矩形的顶部为0,顶部边缘绘制在0像素和1像素之间的空间中。如果该矩形高64像素,则底部为64,底部边缘绘制在64像素和65像素之间。如果将笔的粗细设置为2,那么您将发现底边的另一半绘制在63到64像素之间。垂直边缘同样,即向右绘制第一个奇数像素,向左绘制为偶数。