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>