透明的强调色

3
我想使用LinearGradientBrush来将一些元素(矩形和椭圆)从强调颜色渐变到透明。然而,透明色总是一个颜色,看起来像是“Transparent”颜色是#00FFFFFF - 即白色,透明度为0%。
我想要从PhoneAccentColor渐变到PhoneTransparentAccentColor。因此,如果我的强调颜色是红色,我想要渐变到#00FF0000,如果是绿色,我想要渐变到#0000FF00。
我找不到任何内置的透明强调颜色资源,那么我的选择是什么?我尝试了下面的选项,但没有真正成功,而且我在正常搜索渠道上找不到关于这个主题的太多资料,所以我不太确定我错过了什么。
我提出了一些建议(但如前所述,都没有真正成功):
  • 在代码后台中创建自定义资源,并将其推入应用程序范围的资源字典中?
  • 我能否在我的ViewModels上公开一个具有颜色的属性,并将其绑定到它?

1
你为什么不能直接在XAML中分配颜色呢?#00FF0000是一种完全有效的颜色值。 - Stephan
原因是强调颜色是用户偏好,很抱歉没有表明清楚。当强调颜色为红色时,#00FF0000是一个不错的值。但是,如果用户将强调颜色更改为其他颜色(例如绿色),则从绿色到透明的淡出将从绿色100%到红色0%。我希望它使用0%的强调颜色-在绿色强调的情况下为#0000FF00。 - mikeesouth
2个回答

4

我无法想到一种直接使用xaml指定透明强调色的方法。不过我有几个可能的解决方案。

如果可能的话,您可以对对象的不透明度进行动画处理,而不是颜色本身。

或者您可以在代码中生成颜色(可能是在启动期间)。

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

您可以将颜色存储为资源,并在xaml中引用它。

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

希望这能帮到您。

1

一般来说,由于手机的色彩支持有限,建议避免使用渐变。

不过,您可以尝试在LinearGradientBrush中使用OpacityMask来实现所需的效果。

虽然在您的情况下不适用,因为您正在使用强调颜色,但如果您能够制作包含渐变的图像,您应该查看如何在Windows Phone 7中纠正色带?以了解如何避免色带。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接