Рисование
Элемент OpacityMask
При работе с объектом Clip можно было заметить, что внутреннее оформление фигуры, определяемой внутри элемента, игнорируется. Элемент OpacityMask является инструментом, поддерживающим все свойства элемента Clip с учетом графической структуры заполнителя. Фрагмент кода для элемента OpacityMask выглядит так:
<Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <RadialGradientBrush > <GradientStop Color="Blue" Offset="0" /> <GradientStop Color="Transparent" Offset="1" /> </RadialGradientBrush> </Image.OpacityMask> </Image>
Здесь в качестве заливки фигуры-заполнителя используется радиальный градиент. В табл. 5.13 приводятся примеры использования элемента mask.
№ | Код | Вид в браузере |
---|---|---|
5.13.1 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="291" Height="195" Background="White" x:Name="Page"> <Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <RadialGradientBrush > <GradientStop Color=" Blue" Offset="0" /> <GradientStop Color=" Transparent" Offset="1" /> </RadialGradientBrush> </Image.OpacityMask> </Image> </Canvas> |
||
Описание | ||
Применение в качестве заполнителя маски окружности с градиентной заливкой | ||
№ | Код | Вид в браузере |
5.13.2 | ||
<Canvas xmlns="http://schemas.microsoft.com /client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="291" Height="195" Background="White" x:Name="Page"> <Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <RadialGradientBrush > <GradientStop Color=" Blue" Offset="0.8" /> <GradientStop Color=" Transparent" Offset="1" /> </RadialGradientBrush> </Image.OpacityMask> </Image> </Canvas> |
||
Описание | ||
Применение в качестве заполнителя маски окружности с градиентной заливкой. Уменьшением размера градиентной области достигается увеличение площади открытой поверхности | ||
№ | Код | Вид в браузере |
5.13.3 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="291" Height="195" Background="White" x:Name="Page"> <Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <RadialGradientBrush > <GradientStop Color="Red" Offset="0.9" /> <GradientStop Color=" Transparent" Offset="1" /> </RadialGradientBrush> </Image.OpacityMask> </Image> <Rectangle Width="291" Height="195" > <Rectangle.Fill> <RadialGradientBrush > <GradientStop Color=" Transparent" Offset="0.8" /> <GradientStop Color=" Blue" Offset="1" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> </Canvas> |
||
Описание | ||
При использовании заполнителя, заполненного градиентом любого цвета, на рисунке заметно уменьшение прозрачности белого цвета. Для получения нужного цвета используется комбинация обычного элемента OpacityMask и наложения радиального градиента с падением прозрачности | ||
№ | Код | Вид в браузере |
5.13.4 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="291" Height="195" Background="White" x:Name="Page"> <Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <ImageBrush ImageSource="fish.png"/> </Image.OpacityMask> </Image> </Canvas> |
||
Описание | ||
Применение в качестве заполнителя внешнего графического файла в формате PNG. Исходное изображение было подготовлено во внешнем графическом редакторе (рис. 5.10): Далее оно также было добавлено в папку с проектом (рис. 5.11): | ||
№ | Код | Вид в браузере |
5.13.5 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="291" Height="195" Background="White" x:Name="Page"> <Image Width="291" Height="195" Source="sea2.jpg" Stretch="Fill" > <Image.OpacityMask> <ImageBrush Viewport="0,0,50,50" ViewportUnits="Absolute" TileMode="Tile" ImageSource="fish.png"/> </Image.OpacityMask> </Image> </Canvas> |
||
Описание | ||
Создание паттерна с помощью атрибута TileMode. См. раздел "TileBrush Class":http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.aspx и "TileBrush.Viewport Property": http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.viewport.aspx | ||
№ | Код | Вид в браузере |
5.13.6 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="350" Height="200" Background="White" x:Name="Page"> <TextBlock Canvas.Top="5" Canvas.Left="25" FontFamily="Arial" FontSize="150" Foreground="Red" > АБВ <TextBlock.OpacityMask> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Blue" Offset="0" /> <GradientStop Color="Transparent" Offset="1.2" /> </LinearGradientBrush> </TextBlock.OpacityMask> </TextBlock> </Canvas> |
||
Описание | ||
Маскированный текст |
Мы закончили рассмотрение основных возможностей рисования, связанных с простой графикой.