对于WP7应用程序,我想使用其他颜色来对比当前主题颜色。
我决定将对比色设为“红色”,除非主题颜色已经是“红色”,在这种情况下我会签署合同颜色'蓝色'
但是下面的代码不起作用,因为它没有将主题颜色检测为“红色”,即使它已经设置了这种方式并且肯定在应用程序中显示了这种方式。
private void AssessContrastColor()
{
System.Diagnostics.Debug.WriteLine("In assess color");
SolidColorBrush themeBrush = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
Color themeColor = themeBrush.Color;
SolidColorBrush contrastBrush = new SolidColorBrush();
// contrastBrush.Color = ControlPaint.Light(themeColor);
if (themeColor == Colors.Red)
{
contrastBrush.Color = Colors.Blue;
}
else contrastBrush.Color = Colors.Red;
_ContrastThemeBrush = contrastBrush;
}
代码看起来非常简单,但是,当通过调试器查看时,我得到它时的电话强调颜色(当它的红色时)不是#FFFF0000但是有点不同。
除此之外,我还希望将对比色创建为比主题颜色稍微浅一点的颜色,环顾四周,似乎可以引用一些代码,但随后偶然发现了' ControlPaint.Light调用'看起来很理想,但似乎不是WP7的选项吗?因此在上面评论过。
任何建议表示赞赏。感谢
答案 0 :(得分:2)
这是因为重音颜色不是Red
,而是接近它的颜色,准确#E51400
您可以找到所有颜色的列表以及如何使用它们here。为了将来证明答案,所有颜色的列表:
Blue #1BA1E2
Brown #A05000
Green #339933
Lime #8CBF26
Magenta #FF0097
Orange #F09609
Pink #E671B8
Purple #A200FF
Red #E51400
Viridian #00ABA9
但我强烈建议反对更改对比色。你可能会使内容的可读性降低。
答案 1 :(得分:0)
如果您根据强调色确定自定义颜色,则在第十一种(供应商特定)颜色使用时可能会中断。来自documentation:
您的应用程序应该知道这种额外的颜色,而不是仅对10种系统范围的颜色进行假设。例如,没有用于检查标准10种重音颜色的代码,然后执行特定操作;第十一种颜色可能会破坏操作