如何防止/控制LinearGradientBrush包装?

时间:2012-02-03 01:49:45

标签: c# graphics lineargradientbrush

我的LinearGradientBrush出现问题。我不知道是不是时候(这里是凌晨1点43分),或者我是不是因为其他原因而感到愚蠢,但这真的让我烦恼。

我有以下代码:

using (LinearGradientBrush lgb = new LinearGradientBrush(
        this.brightnessRectangle,this.fullcolour,Color.Black,LinearGradientMode.Vertical))
{
    gradientImage = new Bitmap(50, 200, PixelFormat.Format32bppArgb);

    using (Graphics newGraphics = Graphics.FromImage(gradientImage))
    {
        newGraphics.FillRectangle(lgb, new Rectangle(0, 0, 50, 200));
    }
    gradientImage.Save("test.png", ImageFormat.Png);
}

然而test.png看起来像这样:

enter image description here

正如我相信你能说的那样,这不是理想的效果。有点看起来它已经开始向远处向后缠绕,但顶部和底部异常是不同的大小。

之前有人见过吗?这是一个简单的解决方法吗?

一些注意事项:

  • 谷歌搜索表明我可能有this problem,鲍勃鲍威尔建议可以通过使填充略大于填充区域来修复。这没用。
  • MSDN似乎在谈论与我所拥有的LinearGradientBrush不同的StartPoint。我没有EndPoint或{{1}}属性。

1 个答案:

答案 0 :(得分:2)

尝试确保brightnessRectangle等于(0,0,50,200)。

换句话说,确保您的LinearGradientBrush矩形和FillRectangle是一样的:

Rectangle r = new Rectangle(0, 0, 50, 200);
using (LinearGradientBrush lgb = new LinearGradientBrush(
        r ,this.fullcolour,Color.Black,LinearGradientMode.Vertical)) {
  gradientImage = new Bitmap(r.Width, r.Height, PixelFormat.Format32bppArgb);

  using (Graphics newGraphics = Graphics.FromImage(gradientImage)) {
    newGraphics.FillRectangle(lgb, r);
  }
  gradientImage.Save("test.png", ImageFormat.Png);
}

是的,睡一会儿。