我一直看到分数笔宽度的一些奇怪行为,我想知道是否有人可以解释发生了什么。在表单上绘制一个矩形以响应 Paint 事件:
private void Form1_Paint(object sender, PaintEventArgs e)
{
const float width = 1.996093F;
Rectangle rectangle = new Rectangle(10, 10, 20, 20);
using (Pen pen = new Pen(Color.Black, width))
{
e.Graphics.DrawRectangle(pen, rectangle);
}
}
宽度在 0 到 1.996093 之间,我得到一个 1 像素宽的矩形。宽度在 1.996094 和 2.003906 之间,我得到一个 2 像素宽的矩形;从 2.003907 到 3.996093 我得到 3 个像素,依此类推。更奇怪的是,在宽度为 1.9960937 的情况下,我得到了一个矩形,其顶部边缘宽 2 个像素,其他边缘宽 1 个像素。
谁能解释这里发生了什么?我有点希望分界点是 1.5、2.5、3.5 等。