WPF画刷
1. SolidColorBrush实体画刷
<Grid>
<Button x:Name="Button1" Content="Button" Grid.ColumnSpan="2" Height="25" Width="150">
<Button.Background>
<SolidColorBrush Color="LightBlue"></SolidColorBrush>
</Button.Background>
</Button>
</Grid>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Button1.Foreground=new SolidColorBrush(Colors.Red);
}

2. LinearGradientBrush线性渐变画刷
EndPoint
设置渐变终点的相对位置,取值范围([0,1] [0,1]),(0 0)表示左上角,(1 1)表示右下角
offset
表示偏移距离,取值范围[0,1]
<StackPanel>
<Rectangle Width="250" Height="250" Margin="15">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0 1">
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Red" Offset="0.5"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<TextBlock Margin="15" Text="This text uses a gradient.">
<TextBlock.Foreground>
<LinearGradientBrush EndPoint="1 1">
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Red" Offset="0.5"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
</StackPanel>

3. RadialGradientBrush弧形渐变画刷
GradientOrigin
表示原点,取值范围([0,1] [0,1]),(0.5 0.5)表示圆心
RadiusX
表示X方向的缩放比例,取值范围[0,+正无穷),默认取值0.5
<StackPanel>
<Ellipse Height="350" Width="350" Margin="15">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.5 0.4" RadiusX="0.35" RadiusY="0.4">
<GradientStop Color="Red"></GradientStop>
<GradientStop Color="Yellow" Offset="0.66"></GradientStop>
<GradientStop Color="Green" Offset="1"></GradientStop>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
</StackPanel>

4. ImageBrush图形画刷
ImageSource
设置图片位置
Stretch
拉伸模式,枚举值
Viewbox
可以显示原图片的一部分,取值范围([0,1] [0,1] [0,1] [0,1]),(0.2 0.3 0.2 0.6)表示x方向从0.2开始,y方向从0.3开始,分别取相对场地为0.2、0.6的部分
TileMode
设置图片的翻转效果,枚举值
ViewportUnits
设置平铺的相对值或绝对值,枚举值
Viewport
设置填充的起点及尺寸
<Grid>
<Grid.Background>
<ImageBrush ImageSource="Images/Chrysanthemum.jpg" Stretch="Fill"
Viewbox="0.2 0.3 0.2 0.6" TileMode="FlipXY"
ViewportUnits="RelativeToBoundingBox" Viewport="0,0 0.25,0.5"></ImageBrush>
</Grid.Background>
</Grid>

5. VisualBrush虚拟画刷
<Grid>
<StackPanel>
<Button Margin="15" x:Name="Button1" Content="Is this a real button?" Click="Button1_Click"></Button>
<Rectangle Height="125" Margin="15">
<Rectangle.Fill>
<VisualBrush Stretch="None" Visual="{Binding ElementName=Button1}"></VisualBrush>
</Rectangle.Fill>
</Rectangle>
</StackPanel>
</Grid>
private void Button1_Click(object sender, RoutedEventArgs e)
{
Button1.Content = "Content is changed!";
}

6. BitmapCacheBrush位图缓存画刷
<Grid>
<StackPanel>
<Button Margin="15" x:Name="Button1" Content="Is this a real button?" Click="Button1_Click"></Button>
<Rectangle Height="125" Margin="15">
<Rectangle.Fill>
<BitmapCacheBrush Target="{Binding ElementName=Button1}">
</BitmapCacheBrush>
</Rectangle.Fill>
</Rectangle>
</StackPanel>
</Grid>
