1

我的 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看起来像这样:

在此处输入图像描述

我敢肯定你会说,这不是预期的效果。它看起来像是开始向下并卷回,但顶部和底部的异常大小不同。

有人见过这个吗?这很容易解决吗?

一些注意事项:

  • 谷歌搜索表明我可能遇到了这个问题,鲍勃鲍威尔建议可以通过使填充略大于被填充的区域来解决这个问题。这没有用。
  • MSDN似乎在谈论与LinearGradientBrush我所拥有的不同的。我的没有StartPointEndPoint属性。
4

1 回答 1

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);
}

是的,睡一觉。

于 2012-02-03T02:00:01.833 回答