.net中的LinearGradientBrush(甚至是GDI +中的整体?)似乎有一个严重的错误:有时,它会引入工件.(参见此处或此处 - 基本上,线性渐变的第一行是在endcolor中绘制的,即从白色到黑色的渐变将以黑色线条开始,然后使用正确的白色到黑色渐变)
我想知道是否有人为此找到了解决方法?这是一个非常讨厌的bug :-(
这是Artifacts的图片,请注意有2个LinearGradientBrushes:
替代文字http://img142.imageshack.us/img142/7711/gradientartifactmm6.jpg
使用渐变画笔时我也注意到了这一点.我唯一有效的解决方法是始终创建渐变画笔矩形,在所有边缘上比要用它绘制的区域大1个像素.这可以保护您免受所有四个边缘的问题.缺点是边缘处使用的颜色与您指定的颜色相差无几,但这比绘图工件问题更好!
您可以在矩形上使用漂亮的Inflate(int i)方法来获得更大的版本.