Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

11.07.2006 22:48 | lexa

Ответ может стать неожиданным. В XAML у Вас есть возможность отобразить цвет разными способами...

Во-первых Вы можете воспользоваться 24 битным шестнадцатеричным RGB, широко распространенным в Web, например:

<Ellipse Width="300" Height="100" Fill="#A3BDE2" Stroke="#5C6DBE" StrokeThickness="5" />


Так же в WPF Вы можете отобразить цвет в шестнадцатеричном значении, например #AARRGGB, как показано ниже:

<Line Stroke="#7F006666" StrokeThickness="10" X1="0" X2="300" Y1="100" Y2="0" />


В результате Вы получите голубую линию 50%-ой прозрачности, вокруг какого-либо объекта.

Другая, доступная Вам модель – scRGB, которая позволяет Вам отобразить цвет в виде четырех чисел одинарной точности с плавающей запятой с учетом ультра широкой гаммы отображения цвета. Одна из главных особенностей scRGB - то, что Вам предоставляется возможность использовать значения вне RGB диапазоне #000000..#FFFFFF, позволяя создавать цвета, которые будут “чернее черного” или “белее белого”. Вы, наверно, подумали, что это совершенно бесполезная вещь, но когда возникает необходимость в обработке изображения, то это поможет Вам сохранить точность изображения. Например, Вы обрабатываете фотографию облачного неба через конвейер, который исправляет контраст, насыщенность и яркость. Без цветового преобразования, типа scRGB может произойти так, что любое действие этого конвейера может понизить детализацию изображения(возможно контрастное исправление создает в изображении блоки белого цвета). Позволяя создавать широкий диапазон цвета, даже при том, что он не будет отображаться на экране, что даст возможность сохранить информацию об изображении, так, что к тому времени, когда Вы доберетесь до другого конца конвейера, при исправлении яркости изображения будет использоваться информация, которая иначе была бы потеряна, для того чтобы изображению вернуть видимый диапазон цвета. Не буду отклоняться от темы, и так, вот как Вы можете отображать scRGB цвета в XAML:

<Rectangle Stroke="sc#1, 0.6046357, 0.223508522, 0.182969958" Fill="sc#1, 0.7785599, 1, 0" RadiusX="25" RadiusY="25" Width="250" Height="80" StrokeThickness="5" Margin="60" />


И наконец последний способ отображения цвета в XAML, это использование названия цвета, например Green, SteelBlue или MediumVioletRed. Это названия различных цветов, которые используются в HTML или SVG и имеют множество индивидуальных особенностей. Например, набор названий цветов не распределен по спектру(присутствует большое разнообразие красных и оранжевых оттенков, в то время, как зеленых не хватает) и многие цвета имеют довольно таки не понятные названия(например, не амерекано говорящий пользователь, вряд ли поймет такое название цвета, как DodgerBlue). Некоторые названия записаны противоречиво(например, Gray и DarkGray имеют Американское правописание, в то время, как LightGray имеет Английское правописание).

Есть еще одно необыкновенно явление. Эти цвета берут свое начало не из HTML, а из X Window System, которая произошла от UNIX систем. HTML специфицируется на шестнадцати цветах, входящих в палитру EGA, но такие браузеры, как Mosaic, также поддерживают любые из X11 цветов, основанных на цветовом представлении, определенном как X. К сожалению некоторые из шестнадцати цветов имеют различия в отображении, так, например, в системе X11 зеленый цвет будет выглядеть не так, как в HTML. Печальным результатом является то, что Gray определяется как #808080 в HTML, но DarkGray определяется, как #A9A9A9, что не совсем правильно. WPF дает возможность использования тех же названий цветов для совместимости с HTML, в результате все выше сказанные особенности присутствуют и здесь.

В итоге я хочу Вам посоветовать использовать только scRGB цвета и при том везде, где только возможно, иначе полученный результат Вас может удивить.

Вот пример, который сочетает в себе все перечисленные элементы отображения цвета:

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Margin="30" >
      <Rectangle Stroke="sc#1, 0.6046357, 0.223508522, 0.182969958" Fill="sc#1, 0.7785599, 1, 0"
         RadiusX="25" RadiusY="25" Width="250" Height="80" StrokeThickness="5"
         Canvas.Top="60" Canvas.Left="80"/>
      <Ellipse Width="300" Height="100" Fill="#A3BDE2" Stroke="#5C6DBE" StrokeThickness="5" />
      <Line Stroke="#77006666" StrokeThickness="10" X1="0" X2="300" Y1="100" Y2="0" />
      <TextBlock FontFamily="Calibri" FontSize="40" Foreground="DodgerBlue"
         Canvas.Top="150" Canvas.Left="10">
         <Run FontStyle="Italic">This </Run>is Dodger Blue
      </TextBlock>
   </Canvas>


А вот, как это выглядит:



Источник: http://blogs.msdn.com/tims/
Перевод: lexa

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.05 секунд (Общее время SQL: 0.034 секунд - SQL запросов: 53 - Среднее время SQL: 0.00064 секунд))
Top.Mail.Ru