我想用一个LinearGradientBrush填充一个矩形。对于一些矩形,我得到了一些奇怪的行为。示例:
Rectangle rect = new Rectangle( 20, 20, 20, 34 );
LinearGradientMode mode = LinearGradientMode.Vertical;
Brush brush = new LinearGradientBrush( rect, Color.White, Color.Blue, mode );
e.Graphics.FillRectangle( brush, rect );大多数矩形都可以正常工作,但也有一些(如上图所示)用第二种颜色(本例中为蓝色)填充第一个像素行。请参阅附图:

有什么想法吗?
发布于 2011-03-16 22:24:44
使画笔高一个像素:
LinearGradientMode mode = LinearGradientMode.Vertical;
Rectangle BrushRect = rect;
BrushRect.Inflate(0, 1);
Brush brush = new LinearGradientBrush(BrushRect, Color.White, Color.Blue, mode);发布于 2016-04-11 08:32:36
问题是填充()的MS实现中的错误:当您认为您使用画笔并在某个点(X,Y)上应用时,MS从相反的方向工作:它们采用Y偏移量,并从画笔高度上的除法计算余数。该提醒变为笔刷内部的偏移量以获取颜色。换句话说,您绘制的画布将使用绝对偏移为0的笔刷进行平铺。因此,如果你在位置Y=7处绘制渐变,渐变的颜色也会在偏移7(而不是0)处(从画笔)获取!
https://stackoverflow.com/questions/5326473
复制相似问题