Как я могу предотвратить / контролировать упаковку LinearGradientBrush? - PullRequest
1 голос
/ 03 февраля 2012

У меня проблемы с моей 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

Что, как я уверен, вы сможете сказать, не было желаемого эффекта.Это похоже на то, как будто оно началось далеко вниз и обернуто вокруг, но верхняя и нижняя аномалии имеют разные размеры.

Кто-нибудь видел это раньше?Это легко исправить?

Некоторые примечания:

  • Гугл предполагает, что у меня может быть эта проблема , которую, как предполагает Боб Пауэлл, можно исправить, выполнив заливкунемного больше, чем заполняемая площадь.Это не сработало.
  • MSDN , похоже, говорит о том, что LinearGradientBrush отличается от того, что у меня есть.Шахта не обладает свойствами StartPoint или EndPoint.

1 Ответ

2 голосов
/ 03 февраля 2012

Попробуйте убедиться, что 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);
}

И да, поспи немного.

...