2011-09-11 15 views
3

LinearGradientBrushを使用してWPFウィンドウの背景をペイントしようとしていますが、私のコードは動作しません。 はここにUnforunatelly私の窓はまだ白いコードLinearGradientBrushとBackgroundの使い方

LinearGradientBrush gradientBrush = new LinearGradientBrush(Color.FromArgb(0, 209, 227, 250), Color.FromArgb(0, 170, 199, 238), new Point(0.5, 0), new Point(0.5, 1)); 
Background = gradientBrush; 

です。後ろのコードを使ってウィンドウの背景色を変更することは可能ですか?

+2

どちらも、あなたが 'trueに設定AllowsTransparency'ていない限り、' Background'が黒で表示されますので、トランスペアレントです:あなたは色をしたいので、代わりにこれを使用してください。私は、Alphaチャンネルに0の代わりに255を使うことを意味すると思います。 Windowsのコンストラクタで 'Background'を設定しようとしてもそれを見ることができない場合は、' Window'(おそらく 'Panel')の他のコントロールが別の' Background'セットを持っているからです。その中にコントロールを置かずに 'Window'に設定してみてください。 –

+0

@Meleak:アルファをうまくキャッチして、答えとして投稿してみませんか? –

+0

@ H.B。正当な理由はなく、彼の「窓」はまだ「白い」とOPから言いました。おそらく代わりに答えを投稿しているはずです。 –

答えて

0

Window.Backgroundを別のブラシに設定すると効果があります。

Backgroundプロパティが{Binding}ディレクティブを介してプロパティにデータバインドされていないことを確認してください。

また、よりシンプルなブラシにそれを設定してみてください - たとえば

Background = new SolidColorBrush(Colors.Black);

+0

しかし、私はグラデーション効果を得る必要があります。 SolidColorBrushを使用すると、単色になります。 – wpflerner

+0

SolidColorBrushを試してみるといいですか? –

8

のためにあなたはまた、アルファの設定を設定しています。あなたの色の

LinearGradientBrush gradientBrush = new LinearGradientBrush(Color.FromRgb(209, 227, 250), Color.FromRgb(170, 199, 238), new Point(0.5, 0), new Point(0.5, 1)); 
Background = gradientBrush;