У меня есть несколько многоточий на холсте. Я хочу, чтобы, когда я нажимаю над эллипсом, он должен изменить цвет штриха на зеленый, и если я снова нажму его обратно к исходному цвету, то его красный цвет.Сравнить цвета 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
, он возвращает мне false
. И всегда, когда меня щелкают, мой эллипс становится серым.
Почему это происходит? Как я могу исправить?
EDIT:
Пытались ли вы с 'obj.Stroke.Color == red.Color'? – Alberto
Вы уверены, что создаете кисти 'red',' green' и 'transp' только один раз? Возможно, вы можете просто использовать предопределенные кисти, такие как «Brushes.Red» и т. Д., А не создавать свои собственные. – Clemens
@Alberto И если я ставлю только один '=' возвращает _Error Невозможно неявно преобразовать тип 'System.Windows.Media.Color' в 'System.Windows.Media.Brush'_ – Butzke