我想用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 );


大多数矩形都能正常工作,但有些矩形(如上述矩形)会用第二种颜色(在这种情况下为蓝色)填充第一像素行。
见附图:

 

有任何想法吗?

最佳答案

使画笔高一个像素:

LinearGradientMode mode = LinearGradientMode.Vertical;
Rectangle BrushRect = rect;
BrushRect.Inflate(0, 1);
Brush brush = new LinearGradientBrush(BrushRect, Color.White, Color.Blue, mode);

关于c# - LinearGradientBrush的怪异行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5326473/

10-10 05:18