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次のようになります。

ここに画像の説明を入力

お分かりいただけると思いますが、これは望ましい結果ではありませんでした。だいぶ下に落ち始めて巻き戻ったように見えますが、上下のアノマリーの大きさが違います。

これを前に見た人はいますか?それは簡単な修正ですか?

いくつかのメモ:

  • グーグルは、私がこの問題を抱えている可能性があることを示唆しています.Bob Powellは、塗りつぶしを塗りつぶす領域よりもわずかに大きくすることで修正できると示唆しています. これはうまくいきませんでした。
  • MSDNは、私が持っているものとは別のことを話しているLinearGradientBrushようです。StartPoint私にはまたはEndPointプロパティがありません。
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 に答える