Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [SL] Сахар для цвета 
:(
    Опции темы
dazy
Дата 6.4.2009, 12:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Как известно, все цвета  в xaml пишутся в формате #FF000000 (исключая стандартные black red и т.п.) Самое интересное, что в коде, класс Colors содержит всего 15 цветов, в то время как в xaml можно использовать 192 поименованных цвета.  По умолчанию, цифры в цвет можно перевести пользуясь функцией FromArgb(). Но она принимает данные по-байтам, что не удобно. 
А удобно скопировать цвет из xaml или из блендера и вставить в код.

Для этих целей делаем простенькую обертку, чтобы не вручную разбирать число на байты:

Код

public static Color UIntToColor (uint argb)
{
    return Color.FromArgb((byte) ((argb & -16777216) >> 0x18),
                          (byte) ((argb & 0xff0000) >> 0x10),
                          (byte) ((argb & 0xff00) >> 8),
                          (byte) (argb & 0xff));
}


И пользуемся:
sb = new SolidColorBrush(UIntToColor (0xFF696969));




PM MAIL   Вверх
WolfTheGrey
Дата 6.4.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



Извени, не хчу показаться:  smile 

Тебе обязательно с цифрами рабоать?

ведь, можно при помощи рефлекции переписать все цвета из классов: Colors & Brushes в string[192 цвета] масив;
PM MAIL   Вверх
dazy
Дата 6.4.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Скажем так, я прекрасно понимаю, что одного и того же результата можно добиться разными способами.
Какой способ выбирать, решает разработчик исходя из текущей ситуации. 

Я использую в том числе и этот способ. Тем более что в WPF, эта функция - UIntToColor есть по-умолчанию. Почему бы не применять ее в SL?

Да, и 192 - это ооочень мало. smile

Добавлено @ 14:28
А можно пример, как вы из string[192] потом цвет получаете?

Это сообщение отредактировал(а) dazy - 6.4.2009, 14:28
PM MAIL   Вверх
rooks
Дата 6.4.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 28.9.2008
Где: Минск

Репутация: 5
Всего: 9



dazy, спасибо, очень классная штука... я ее немного переделал:
Код
public static Color ToColor(this uint argb)

и теперь это можно юзать так:
Код
Color c = 0xFF696969.ToColor();

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.