2012-02-03 72 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對我有。礦井沒有StartPointEndPoint屬性。
+0

this.brightnessRectangle的屬性是什麼? – 2012-02-03 01:54:12

回答

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

謝謝拉爾斯 - 我以爲我曾嘗試過,但它現在似乎已經奏效。 – 2012-02-03 10:04:45