[英]How to compare if((sender as Grid).Background== new SolidColorBrush(Colors.Green)) in wpf
[英]Compare Colors WPF
我在畫布上有一些省略號。 我希望當我在橢圓上方單擊時,它應該將筆划的顏色更改為綠色,如果我再次單擊它將其原始顏色更改為紅色。
我用過這三種顏色。
SolidColorBrush red = new SolidColorBrush(Colors.Red);
SolidColorBrush green = new SolidColorBrush(Colors.Green);
SolidColorBrush transp = new SolidColorBrush(Colors.Transparent);
當我創建橢圓時,我已經將顏色設置為紅色。
Ellipse obj = new Ellipse()
{
Name = "",
Width = width,
Height = height,
Fill = transp,
Stroke = red,
};
然后,如果我點擊一些橢圓,我會要求筆觸顏色改變顏色。
if (obj.Stroke == red) obj.Stroke = green;
else if (obj.Stroke == green) obj.Stroke = red;
else obj.Stroke = gray;
但問題是總是處於else
狀態。 即使if條件中的顏色相同,它if
返回false
。 並且總是在點擊時我的橢圓變成灰色。
為什么會這樣? 我該怎么辦?
編輯:
您可能正在比較不同的畫筆實例,這就是if語句返回false的原因。 你可以只比較顏色:
if (((SolidColorBrush)obj.Stroke).Color == Colors.Red)
{
...
}
不要創建自己的SolidColorBrush實例,而是使用Brushes類中的預定義實例:
Ellipse obj = new Ellipse()
{
Name = "",
Width = width,
Height = height,
Fill = Brushes.Transparent,
Stroke = Brushes.Red,
};
...
if (obj.Stroke == Brushes.Red)
{
obj.Stroke = Brushes.Green;
}
else if (obj.Stroke == Brushes.Green)
{
obj.Stroke = Brushes.Red;
}
else
{
obj.Stroke = Brushes.Gray;
}
obj.Stroke
的值顯然不是new SolidColorBrush(Colors.Red)
......它可能是Brushes.Red
,或Brushes.Green
等,但這只是猜測。 您可以通過簡單地在if
語句上添加一個斷點來確定。
將鼠標光標移動到Visual Studio中的obj.Stroke
上(當命中斷點時)將告訴您確切的值是什么,然后您可以在if
語句中使用該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.