Программно установить цвет текста переднего плана кнопки - PullRequest
0 голосов
/ 10 октября 2019

Это для приложения UWP. ReturnCharacter () вернет либо o, либо x. Если x был возвращен, синий цвет установлен. Остальное (o было возвращено) и установлен красный цвет. Затем на кнопке пишется x или o, используя ранее установленный цвет. Таким образом, мы должны получить либо синий х, либо красный о на кнопке. Пробовал следующее, но это не работает. Я просто получаю коричневый х или о. Интересно, откуда этот цвет? Кроме того, есть ли способ использовать шестнадцатеричные значения для цветов вместо значений RGB?

    private void Button1_Click(object sender, RoutedEventArgs e)
    {
        char c = ReturnCharacter();

        if (c == 'x')
        {
            button1.Foreground = new SolidColorBrush(Color.FromArgb(51, 178, 255, 0));
        }
        else
        {
            button1.Foreground = new SolidColorBrush(Color.FromArgb(255, 104, 51, 0));
        }

        button1.Content = c;
    }

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Color.FromArgb ожидает A , R , G , B компонентов, в том порядке

НетИнтересно, почему вы получаете следующие цвета:

enter image description here

enter image description here

Вы хотите вместо этого:

enter image description here

enter image description here

Color.FromArgb(255, 51, 178, 255);
Color.FromArgb(255, 255, 104, 51);
1 голос
/ 10 октября 2019

Color.FromArgb() принимает 4 параметра. Первый - это альфа-канал. Если вы хотите, чтобы цвет был полностью непрозрачным, то правильным значением будет 255.

Возможно, вы захотите:

private void Button1_Click(object sender, RoutedEventArgs e)
{
    char c = ReturnCharacter();

    if (c == 'x')
    {
        button1.Foreground = new SolidColorBrush(Color.FromArgb(255, 51, 178, 255));
    }
    else
    {
        button1.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 104, 51));
    }

    button1.Content = c;
}

или более просто и эффективно:

SolidColorBrush blue = new SolidColorBrush(Color.FromArgb(255, 51, 178, 255));
SolidColorBrush red = new SolidColorBrush(Color.FromArgb(255, 255, 104, 51))

private void Button1_Click(object sender, RoutedEventArgs e)
{
    char c = ReturnCharacter();
    button1.Foreground = c == 'x' ? blue : red;
    button1.Content = c;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...