C # Кисть для строки
4417 просмотра
3 ответа
Я ищу способ сохранить цвет кисти в виде строки. Например, у меня есть кисть, которая имеет красный цвет. Теперь я хочу написать «красный» в текстовом поле.
Спасибо за любую помощь.
Автор: Waronius Источник Размещён: 12.11.2019 09:39Ответы (3)
2 плюса
Если Brush
объект был создан с помощью Color
from System.Drawing.Color
, то вы можете использовать свойство Color
s Name
.
В противном случае, вы можете просто попытаться найти цвет, используя отражение
// hack
var b = new SolidBrush(System.Drawing.Color.FromArgb(255, 255, 235, 205));
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 == b.Color.R &&
value.G == b.Color.G &&
value.B == b.Color.B &&
value.A == b.Color.A
select p.Name).DefaultIfEmpty("unknown").First();
// colorname == "BlanchedAlmond"
или создайте отображение самостоятельно (и посмотрите на цвет с помощью a Dictionary
), возможно, используя одну из множества таблиц цветов вокруг.
Редактировать:
Вы написали комментарий, в котором говорите, что используете System.Windows.Media.Color
, но вы все равно можете использовать его System.Drawing.Color
для поиска названия цвета.
var b = System.Windows.Media.Color.FromArgb(255, 255, 235, 205);
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 == b.R &&
value.G == b.G &&
value.B == b.B &&
value.A == b.A
select p.Name).DefaultIfEmpty("unknown").First();
Автор: sloth
Размещён: 11.10.2012 02:50
2 плюса
Что это за кисть? Если это рисование пространства имен, то кисть является абстрактным классом. Для SolidBrush выполните:
brush.Color.ToString ()
В противном случае получите свойство color и используйте метод ToString () для преобразования цвета в его строковое представление.
Автор: pathfinder666 Размещён: 11.10.2012 02:370 плюса
В основном я выложу то, что уже ответили.
string color = textBox1.Text;
// best, using Color's static method
Color red1 = Color.FromName(color);
// using a ColorConverter
TypeConverter tc1 = TypeDescriptor.GetConverter(typeof(Color)); // ..or..
TypeConverter tc2 = new ColorConverter();
Color red2 = (Color)tc.ConvertFromString(color);
// using Reflection on Color or Brush
Color red3 = (Color)typeof(Color).GetProperty(color).GetValue(null, null);
// in WPF you can use a BrushConverter
SolidColorBrush redBrush = (SolidColorBrush)new BrushConverter().ConvertFromString(color);
Оригинальный ответ: Преобразовать строку в имя цвета кисти / кисти в C #
Автор: inzenir Размещён: 11.10.2012 02:36Вопросы из категории :
- c# Преобразовать десятичную в двойную?
- c# Как рассчитать чей-то возраст в C #?
- c# Как вы сортируете словарь по значению?
- c# В чем разница между int и Integer в Java и C #?
- c# Как создать новый экземпляр объекта из Типа
- c# Datatable против Dataset
- string В чем разница между строкой и строкой в ??C #?
- string Почему в Ruby нет реального StringBuffer или StringIO?
- string Преобразовать строку в перечисление в C #
- string Преобразование списка <Integer> в список <String>
- string Самый эффективный способ объединения строк?
- string Экранирование строк HTML с помощью jQuery
- brush Как привязать стиль линии в Actionscript 3.0?
- brush C # Кисть для строки
- brush LINQ SingleOrDefault, Brush, что я делаю не так?
- brush Как сохранить кисть в настройках пользователя
- brush Текстурная роспись на 3D модели
- brush Android рассчитать размер экрана для рисования