我正在Windows Phone 8中开发一种棘手的颜色游戏 我有一个文本块和8个矩形(颜色)
任务是按颜色和不这个词的颜色!
示例:如果文字为: RED ,则文字的前景为绿色 玩家必须点击绿色矩形,不红色
所以在检查答案功能中
我写道:
private void CheckAnswer(Rectangle c)
{
if (SaveMission == 1)
{
if (ColorText.Foreground.Equals(c.Fill))
MessageBox.Show("Right Answer");
else
MessageBox.Show("Wrong Answer");
}
}
前景属性获取Windows.Media.Bursh
以及填充属性获取Windows.Media.Brush
当我调试应用程序时:答案总是错误! 有什么问题?
答案 0 :(得分:1)
首先演示问题的示例程序
System.Windows.Media.Brush b1 = new SolidColorBrush(Color.FromArgb(0,0,0,0));
System.Windows.Media.Brush b2 = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
bool b = b1.Equals(b2);
//b will equal false
现在,如果在程序未运行时用鼠标将鼠标悬停在.Equals
上,您将看到它正在使用DependencyObject.Equals
方法“确定提供的DependencyObject是否等效于当前的DependencyObject “。或者换句话说,不比较颜色
解决方案是投射和检索颜色
System.Windows.Media.Brush b1 = new SolidColorBrush(Color.FromArgb(0,0,0,0));
System.Windows.Media.Brush b2 = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
bool b = ((SolidColorBrush)b1).Color.Equals(((SolidColorBrush)b2).Color);