2012-02-03 8 views
1

私はLinearGradientBrushに問題があります。私はそれが時間(1時43分ここ)であるか、私が他の何らかの理由で愚かであるかどうかわからないが、これは本当に私を悩ませている。LinearGradientBrushのラッピングを防止/制御するにはどうすればよいですか?

私は次のコードを持っている:

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のプロパティはありません。
+0

this.brightnessRectangleのプロパティは何ですか? –

答えて

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

そして、はい、いくつかの睡眠を得ます。

+0

感謝ラーズ - 私はそれを試みたと思ったが、今働いているようだ。 –

関連する問題