2010-11-18 16 views
3

LinearGradientBrushを使用して、アクセントの色からいくつかの要素(四角形や楕円)を透明にフェードさせたい。しかし、透明な色は常に色で、 "透明"の色は#00FFFFFFです - 白は0%の不透明度です。透明なアクセントの色

PhoneAccentColorからPhoneTransparentAccentColorにフェードしたいと思います。だから私のアクセントの色が赤の場合は#00FF0000にフェードしたい、緑の場合は#0000FF00にフェードしたい。

透明なアクセントのための色のリソースが見つかりません。私のオプションは何ですか?私は以下のオプションを試してみましたが、実際の成功はなく、通常の検索チャンネルでこのトピックをあまり見つけられないので、私はここで何が欠けているのか分かりません。私が思いついた

いくつかの提案が(ただし本当の成功を収めて先に述べたように):

  • は、背後にあるコードでカスタムリソースを作成し、アプリケーション全体のリソースディクショナリに押し込み?
  • ViewModelのプロパティをColorで公開してバインドできますか?
+1

XAMLで直接色を割り当てることができない理由はありますか? #00FF0000は完全に有効な値です。 – Stephan

+0

理由は、アクセントの色がユーザーの好みであることです。 #00FF0000は、アクセントの色が赤色の場合に適しています。しかし、ユーザがアクセントの色を他の色(例えば緑色)に変更すると、緑から透明へのフェードは緑100%から赤0%になる。私は0%アクセントの色を使用したい - それは緑のアクセントの場合#0000FF00です。 – mikeesouth

答えて

4

xamlで透明なアクセントの色を直接指定する方法は考えられません。私は可能な解決策のカップルを持っています。

可能であれば、オブジェクト自体の色ではなく不透明度をアニメートできます。あなたの

コードに色を生成することがありましたが(おそらく始動中)

var accentColor = (Color)Application.Current.Resources["PhoneAccentColor"]; 
var transparentAccentColor = accentColor.A = 0; 

その後、リソースとしての色を保存し、XAMLでそれを参照することができます。

Application.Current.Resources.Add("TransparentPhoneAccentColor", transparentAccentColor); 

これが役に立ちます。

1

一般的なガイドラインとして、使用可能な色のサポートのために電話でグラデーションを使用しないでください。

LinearGradientBrushでOpacityMaskを使用して、目的の結果を得ることもできます。

アクセントの色を使用している場合、あなたのケースでは適用できませんが、グラデーションを含む画像を作成できる場合は、バンディングを避ける方法についてはHow can I correct color banding in windows phone 7?が必要です。