如果我用 a 绘制一个宽度超过 202 像素的矩形LinearGradientBrush
,我在左侧看到一条彩色条纹:
给定一个代码202px宽矩形:
private void MainForm_Paint(object sender, PaintEventArgs e)
{
Rectangle r = new Rectangle(50, 50, 202, 50);
Color color1 = Color.FromArgb(unchecked((int)0xFF00024d));
Color color2 = Color.FromArgb(unchecked((int)0xFFd6a20f));
Brush b = new LinearGradientBrush(r, color1, color2, LinearGradientMode.Horizontal);
e.Graphics.FillRectangle(b, r);
}
我得到一个正确绘制的矩形:
但是如果我将矩形更改为203像素宽:
Rectangle r = new Rectangle(50, 50, 203, 50);
该矩形的左侧有一个彩色边缘或环绕:
它也发生在垂直方向LinearGradientMode.Vertical
:
202px:
203px:
在 FillRectangle() 调用之前添加此语句:
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
这避免了由于浮点舍入误差而导致的差一问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)