Ian*_*oyd 6 .net graphics gdi+ winforms
如果我用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);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个正确绘制的矩形:

但如果我将矩形更改为203像素宽:
Rectangle r = new Rectangle(50, 50, 203, 50);
Run Code Online (Sandbox Code Playgroud)
矩形在左侧有一个彩色条纹或环绕:

它也发生在垂直方向LinearGradientMode.Vertical:
202px:

203px:

Han*_*ant 11
在FillRectangle()调用之前添加此语句:
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
Run Code Online (Sandbox Code Playgroud)
这避免了由于浮点舍入错误导致的逐个问题.