2010-11-18 116 views
3

我想使用LinearGradientBrush從重音顏色淡入淡出一些元素(矩形和橢圓)。然而 - 透明顏色總是一種顏色,它看起來像「透明」的顏色是#00FFFFFF - 這是白色的,不透明度爲0%。透明重音顏色

我想從PhoneAccentColor淡出到PhoneTransparentAccentColor。所以,如果我的口音顏色是紅色,我想淡出#00FF0000,如果它是綠色,我想淡出#0000FF00。

我找不到任何內置的透明色調的顏色資源,所以我的選擇是什麼?我嘗試了下面的選項,但沒有取得真正的成功,我無法通過正常的搜索渠道找到很多關於此主題的信息,所以我不確定我在這裏錯過了什麼。

我想出了一些建議(但沒有真正的成功如前所述):

  • 在代碼中創建自定義資源的後面,將其推入應用廣泛的資源字典?
  • 我可以用Color顯示ViewModel上的屬性並綁定它嗎?
+1

是否有原因不能直接在XAML中分配顏色? #00FF0000是一種顏色的完美有效值。 – Stephan 2010-11-18 21:29:36

+0

原因是重音顏色是用戶首選項,抱歉沒有明確說明。重音顏色爲紅色時,#00FF0000是一個很好的值。但是,如果用戶將口音顏色更改爲某種其他顏色(例如綠色),則從綠色變爲透明的綠色將從綠色100%變爲紅色0%。我希望它使用0%的重音顏色 - 在綠色重音的情況下是#0000FF00。 – mikeesouth 2010-11-18 22:52:03

回答

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?以瞭解如何避免出現條紋。