2010-11-18 134 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?以了解如何避免出现条纹。