比较文本前景和矩形填充错误

时间:2014-04-28 16:32:47

标签: c# windows-phone-8

我正在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

当我调试应用程序时:答案总是错误! 有什么问题?

1 个答案:

答案 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);