Рисование
Заливка
Заливка цветом может применяться к фигурам, тексту и элементам Path. При указании цвета допустимы именованные названия, а также код в шестнадцатеричной форме. В табл.5.1 приводится описание основных атрибутов заливки.
Ранее мы пользовались при заливке только атрибутом Fill . Следовательно, мы имели дело с полностью непрозрачными объектами, заполняемыми цветом полностью. В табл. 5.2 приводятся примеры использования атрибутов заливки.
№ | Код | Вид в браузере |
---|---|---|
5.2.1 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="210" Height="100" Background="White" x:Name="Page"> <Rectangle Canvas.Left="0" Canvas.Top="25" Width="210" Height="50" Fill="black" /> <Rectangle Canvas.Left="10" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.1" /> <Rectangle Canvas.Left="30" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.2" /> <Rectangle Canvas.Left="50" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.3" /> <Rectangle Canvas.Left="70" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.4" /> <Rectangle Canvas.Left="90" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.5" /> <Rectangle Canvas.Left="110" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.6" /> <Rectangle Canvas.Left="130" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.7" /> <Rectangle Canvas.Left="150" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.8" /> <Rectangle Canvas.Left="170" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="0.9" /> <Rectangle Canvas.Left="190" Canvas.Top="0" Width="10" Height="100" Fill="red" Opacity="1" /> </Canvas> |
||
Описание | ||
Полоски с различными значениями прозрачности | ||
№ | Код | Вид в браузере |
5.2.2 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="210" Height="100" Background="White" x:Name="Page"> <Rectangle Canvas.Left="0" Canvas.Top="25" Width="210" Height="50" Fill="black" /> <Canvas Width="210" Height="100" Canvas.Left="0" Canvas.Top="0" Opacity="0.6"> <Rectangle Canvas.Left="10" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="30" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="50" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="70" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="90" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="110" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="130" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="150" Canvas.Top="0" Width="10" Height="100" Fill="red"/> <Rectangle Canvas.Left="170" Canvas.Top="0" Width="10" Height="100" Fill="red" /> <Rectangle Canvas.Left="190" Canvas.Top="0" Width="10" Height="100" Fill="red" /> </Canvas> </Canvas> |
||
Описание | ||
Задание единой прозрачности для группы элементов при помощи элемента Canvas | ||
№ | Код | Вид в браузере |
5.2.3 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="210" Height="100" Background="White" x:Name="Page"> <Rectangle Canvas.Left="0" Canvas.Top="25" Width="210" Height="50" Fill="black" /> <Path Fill="red" Opacity="0.6" > <Path.Data> <GeometryGroup FillRule="NonZero" > <RectangleGeometry Rect=" 10,0 10 100" /> <RectangleGeometry Rect=" 30,0 10 100" /> <RectangleGeometry Rect=" 50,0 10 100" /> <RectangleGeometry Rect=" 70,0 10 100" /> <RectangleGeometry Rect=" 90,0 10 100" /> <RectangleGeometry Rect=" 110,0 10 100" /> <RectangleGeometry Rect=" 130,0 10 100" /> <RectangleGeometry Rect=" 150,0 10 100" /> <RectangleGeometry Rect=" 170,0 10 100" /> <RectangleGeometry Rect=" 190,0 10 100" /> </GeometryGroup> </Path.Data> </Path> </Canvas> |
||
Описание | ||
Задание единой прозрачности для группы элементов, объединенных в элементе Path | ||
№ | Код | Вид в браузере |
5.2.4 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="210" Height="100" Background="White" x:Name="Page"> <Polygon Points="50,6 18,86 98,38 2,38 82,86" FillRule="NonZero" Fill="red" Stroke="black" StrokeThickness="1"/> <Polygon Points="151,6 119,86 199,38 103,38 183,86" FillRule="EvenOdd" Fill="red" Stroke="black" StrokeThickness="1"/> </Canvas> |
||
Описание | ||
Режимы заливки – полная и с пустыми областями | ||
№ | Код | Вид в браузере |
5.2.5 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" Width="210" Height="100" Background="White" x:Name="Page"> <Polygon Points="50,6 18,86 98,38 2,38 82,86" Fill="red" Stroke="black" StrokeThickness="1"/> <Polygon Points="151,6 119, 86 199,38 103,38 183,86" FillRule="EvenOdd" Fill="red" Stroke="black" StrokeThickness="1"/> </Canvas> |
||
Описание | ||
Значение EvenOdd совпадает с принятым по умолчанию | ||
№ | Код | Вид в браузере |
5.2.6 | ||
<Canvas xmlns="http://schemas.microsoft.com/ client/2007" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xam" Width="350" Height="100" Background="Black" x:Name="Page"> <TextBlock Canvas.Top="10" Canvas.Left="15" FontFamily="Arial" FontSize="40" FontWeight="Bold" > <Run Text="Red " Foreground="Red" /> <Run Text="Green " Foreground="Green" /> <Run Text="Blue " Foreground="Blue" /> </TextBlock> <TextBlock Canvas.Top="50" Canvas.Left="15" FontFamily="Arial" FontSize="40" FontWeight="Bold" Opacity="0.5"> <Run Text="Red " Foreground="Red" /> <Run Text="Green " Foreground="Green" /> <Run Text="Blue " Foreground="Blue" /> </TextBlock> </Canvas> |
||
Описание | ||
Полностью непрозрачный и частично прозрачный текст на черном фоне |
Линейная градиентная заливка
Линейная градиентная заливка предназначена для получения плавного цветового перехода в направлении, заданной прямой. Элемент LinearGradientBrush формирует содержимое заливки заданной фигуры:
<Rectangle Width="150" Height="150" > <Rectangle.Fill> <LinearGradientBrush> <GradientStop Color="red" Offset="0" /> <GradientStop Color="yellow" Offset="1" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle>
Внутри элемента LinearGradientBrush задаются цвета градиента с помощью тегов GradientStop и граница области каждого из цветов в атрибутах Оffset (рис. 5.1):
Атрибут Offset определяет области покрытия исходных цветов и формируемого ими промежуточного. Так, на рисунке первый цвет занимает 0.3 от всей области, второй цвет также 0.3 (1- 0.7=0.3), а область градиента занимает всю остальную часть, т.е. 0.4. В табл. 5.3 приводится примеры с различными значениями атрибута Offset.