Использование кистей в Silverlight

Кисти применяются для заливки фона элементов пользовательского интерфейса. Так, например, для создания градиента необходимо использовать кисть GradientBrush, которая имеет 2 разновидности. Но обо всем по порядку.
На данный момент существует 5 разновидностей кисти:

  1. SolidColorBrush
  2. LinearGradientBrush
  3. RadialGradientBrush
  4. ImageBrush
  5. VideoBrush

Для экспериментов создадим новый silverlight проект. О создании проекта читайте «Создание silverlight приложения в Visual Studio»

 

SolidColorBrush

Самый простой вид кисти, используется по умолчанию при установке свойства Fill или Stroke объекта. Для применения необходимо внутри конструкции <Элемент.Fill> вставить <SolidColorBrush/> тег. Для задания цвета используется атрибут Color. О возможных значениях следует поговорить подробней.

Цвет можно задать тремя разными способами:

  • Имя цвета. Например, “Black”, “Red”, “Blue” и т.д.
  • 6-символьная нотация. Используется шестнадцатеричное представление цвета. Например, #FF0000 - красный, #D378AE, #235467 и т.д.
  • 8-символьная нотация. То же самое, что и 6-символьная, только добавлены 2 символа, стоящие перед значениями цвета, задающие уровень прозрачности элемента. Например, #7FFF0000 - полупрозрачный, красный.

Ниже приведён пример применения кисти.

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <SolidColorBrush Color="Blue"/>

  15:      </Rectangle.Fill>

  16:    </Rectangle>

  17:  </Canvas>

 

LinearGradientBrush

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

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">

  15:          <GradientStop Color="#FF000000" Offset="0"/>

  16:          <GradientStop Color="#FFFFFFFF" Offset="1"/>

  17:        </LinearGradientBrush>

  18:      </Rectangle.Fill>

  19:    </Rectangle>

  20:  </Canvas>

 

Здесь мы задали начальные точки градиента с помощью StartPoint и EndPoint и присвоили им значения «0,0.5» и «1,0.5» соответственно. Что это значит? Первая координата – X, вторая – Y, так вот если принять ширину и высоту фигуры за 1 (X и Y), а именно так задаются координаты линейного градиента в silverlight, то становиться понятно, что в нашем случае прямая градиента расстилается от середины левой грани фигуры (X=0 – левая грань, Y=0.5 – её середина) до середины правой.
Далее мы объявили <GradientStop/> - это точка останова, то есть здесь мы задаем некоторый цвет, который будет плавно переходить в соседние на прямой, если таковые имеются. Имеет атрибуты Color и Offset. С первым все понятно, а вот второй – это координата точки на градиентной прямой, длина которой равна 1.

С простым градиентом все понятно, но что делать, если нам нужно больше цветов? Для этого и существуют точки остановки на прямой, в которых можно задать дополнительный цвет. Просто добавим ещё один или несколько <GradientStop/>:

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">

  15:          <GradientStop Color="#FF000000" Offset="0"/>

  16:          <GradientStop Color="#FFFFFFFF" Offset="1"/>

  17:          <GradientStop Color="#FF1E26DC" Offset="0.745"/>

  18:          <GradientStop Color="#FFEC1F1F" Offset="0.409"/>

  19:          <GradientStop Color="#FF7CFF00" Offset="0.096"/>

  20:        </LinearGradientBrush>

  21:      </Rectangle.Fill>

  22:    </Rectangle>

  23:  </Canvas>

 

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

 

RadialGradientBrush

Начнём сразу с примера:

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <RadialGradientBrush Center="0,0.5">

  15:          <GradientStop Color="#FF000000" Offset="0"/>

  16:          <GradientStop Color="#FFFFFFFF" Offset="1"/>

  17:          <GradientStop Color="#FFF02121" Offset="0.216"/>

  18:        </RadialGradientBrush>

  19:      </Rectangle.Fill>

  20:    </Rectangle>

  21:  </Canvas>

 

Здесь с помощью <RadialGradientBrush/> мы объявили круговой градиент. Суть заключается в том, что вокруг некоторой точки образуется рассеивающийся во все стороны круговой градиент. Для большего понимания посмотрите на результат:

С помощью Center можно задать координаты центра градиента.

 

ImageBrush

С помощью данной кисти можно задать изображение как заливку элемента. Объявляется с атрибутом ImageSource, который указывает на адрес картинки. Сама картинка может располагаться на этом же сервере или загружаться с другого, во втором случае нужно указать URL-адрес картинки.

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <ImageBrush ImageSource="image.jpg"/>

  15:      </Rectangle.Fill>

  16:    </Rectangle>

  17:  </Canvas>

 

VideoBrush

То же самое, что и ImageBrush, только в качестве материала заливки служит видео и атрибут для указания файла называется SourceName. Формат видео файла – WMV, стандартный для windows. Если ваше видео другого формата, то его нужно конвертировать, например, с помощью Windows Movie Maker, который устанавливается по умолчанию в Windows Vista/XP.

   1:  <Canvas

   2:      xmlns="http://schemas.microsoft.com/client/2007"

   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:      Width="640" Height="480"

   5:      Background="White"

   6:      x:Name="Page"

   7:      >

   8:    <Rectangle Width="439" 

   9:               Height="198" 

  10:               Stroke="#FF000000" 

  11:               Canvas.Left="46" 

  12:               Canvas.Top="102">

  13:      <Rectangle.Fill>

  14:        <VideoBrush SourceName="video.wmv"/>

  15:      </Rectangle.Fill>

  16:    </Rectangle>

  17:  </Canvas>

 

По неясным мне причинам видео проигрываться отказалось, но я думаю, что через некоторое время причина найдется.

Posted on 12.10.2007 17:43:18 by Admin

Permalink | Комментарии (0) | Post RSSRSS comment feed |

Categories: Silverlight

Tags: , ,

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Похожие записи

Добавить комментарий


(Отображает Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Предпросмотр

ноября 21. 2008 02:58