Как получить цвет из Rectangle в свойстве fill? - PullRequest
0 голосов
/ 19 ноября 2018

Я знаю, как настроить заливку из элемента управления WPF.

Rectangle a = new Rectangle()
a.Fill = Brushes.Red;

но я не могу получить цвет.

Я хочу такой код.

string color = a.Fill; // Red
var color2 = a.Fill(T); // Brushes.Red
var color3 = a.Fill; // other object

1 Ответ

0 голосов
/ 19 ноября 2018

Если я вас правильно понимаю, вы хотите получить название цвета в вашем Rectangle.Fill свойстве в виде строки (как вы бы его набрали в xaml)?

Я нашел решение для этого здесь

в вашем коде это должно выглядеть так:

      SolidColorBrush brush = (SolidColorBrush)a.Fill;
  Color c = brush.Color;
  var colorname = (from p in typeof(System.Drawing.Color).GetProperties()
                   where p.PropertyType.Equals(typeof(System.Drawing.Color))
                   let value = (System.Drawing.Color)p.GetValue(null, null)
                   where value.R == c.R &&
                         value.G == c.G &&
                         value.B == c.B &&
                         value.A == c.A
                   select p.Name).DefaultIfEmpty("unknown").First(); 

Для моего прямоугольника <Rectangle Name="a" Fill="Aqua"></Rectangle> строка вернет "Aqua".

...