C# WPF编程-画刷(Brush)填充图形对象的颜色或图案
C# WPF 画刷(Brush)填充图形对象的颜色或图案
- 1.SolidColorBrush
- 2.LinearGradientBrush
- 3. RadialGradientBrush
- 5. DrawingBrush
- 6. VisualBrush
- 综合示例
1.SolidColorBrush
- SolidColorBrush是最简单的画刷类型,用于以纯色填充区域。
<Rectangle Width="100" Height="100">
<Rectangle.Fill>
<SolidColorBrush Color="Blue"/>
</Rectangle.Fill>
</Rectangle>
或者代码实现
var rectangle = new Rectangle { Width = 100, Height = 100 };
rectangle.Fill = new SolidColorBrush(Colors.Blue);
2.LinearGradientBrush
LinearGradientBrush用于创建线性渐变效果,可以指定多个颜色停止点(GradientStop)来定义渐变的颜色过渡。
<Rectangle Width="200" Height="100">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Red" Offset="0.25" />
<GradientStop Color="Blue" Offset="0.75" />
<GradientStop Color="LimeGreen" Offset="1.0" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
3. RadialGradientBrush
RadialGradientBrush与LinearGradientBrush类似,但它创建的是基于圆心向外辐射的渐变效果。
<Ellipse Width="200" Height="100">
<Ellipse.Fill>
<RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="Yellow" Offset="0" />
<GradientStop Color="Red" Offset="0.25" />
<GradientStop Color="Blue" Offset="0.75" />
<GradientStop Color="LimeGreen" Offset="1" />
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
4. ImageBrush
ImageBrush允许使用图像作为填充内容。
<Rectangle Width="200" Height="100">
<Rectangle.Fill>
<ImageBrush ImageSource="Images/Linux-logo.png"/>
</Rectangle.Fill>
</Rectangle>
5. DrawingBrush
DrawingBrush可用于绘制矢量图形或位图作为填充内容。
<Rectangle Width="200" Height="100">
<Rectangle.Fill>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing Geometry="M0,0 L1,0 0,1 Z">
<GeometryDrawing.Brush>
<SolidColorBrush Color="Red"/>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
6. VisualBrush
VisualBrush允许你用另一个UI元素的内容作为填充内容。
<Rectangle Width="200" Height="100">
<Rectangle.Fill>
<VisualBrush>
<VisualBrush.Visual>
<TextBlock Text="Hello, WPF!" FontSize="20"/>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
综合示例
<Window x:Class="WpfBaseDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfBaseDemo"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800">
<Grid>
<!-- 定义行 -->
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<!-- 定义列 -->
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Rectangle Grid.Row="0" Grid.Column="0">
<Rectangle.Fill>
<SolidColorBrush Color="Blue" Opacity="0.8"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle Grid.Row="0" Grid.Column="1">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0 0" EndPoint="1 1">
<GradientStop Offset="0.00" Color="Yellow"/>
<GradientStop Offset="0.25" Color="Red"/>
<GradientStop Offset="0.50" Color="Blue"/>
<GradientStop Offset="0.75" Color="LimeGreen"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Ellipse Grid.Row="0" Grid.Column="2">
<Ellipse.Fill>
<RadialGradientBrush Center="0.5 0.5" GradientOrigin="0.5 0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Offset="0.00" Color="Yellow"/>
<GradientStop Offset="0.25" Color="Red"/>
<GradientStop Offset="0.75" Color="Blue"/>
<GradientStop Offset="1.00" Color="LimeGreen"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Rectangle Grid.Row="1" Grid.Column="0">
<Rectangle.Fill>
<ImageBrush ImageSource="Images/Linux-logo.png" Stretch="Uniform" AlignmentX="Left" AlignmentY="Top"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle Grid.Row="1" Grid.Column="1">
<Rectangle.Fill>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing Geometry="M0,0 L1,0 0,1 Z">
<GeometryDrawing.Brush>
<SolidColorBrush Color="Red"/>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle Grid.Row="1" Grid.Column="2">
<Rectangle.Fill>
<VisualBrush>
<VisualBrush.Visual>
<Canvas>
<TextBlock Text="Hello" FontSize="20" Opacity="0.6" Foreground="Red"/>
<Label Content="Hello"></Label>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
</Window>