动态改变画刷,首先设置Fill.GradientOrigin属性,线性渐变有一个起点和一个终点用于定义渐变矢量,而径向渐变有一个椭圆以及一个焦点 (GradientOrigin) 用于定义渐变行为。该椭圆定义渐变的终点。使用ColorAnimation改变颜色,使用PointAnimatin改变坐标。
效果图:从图一变到了图二
图一 图二
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<PointAnimation Storyboard.TargetName="ellipsel"
Storyboard.TargetProperty="Fill.GradientOrigin"
To="1,1" Duration="0:0:5">
</PointAnimation>
<ColorAnimation Storyboard.TargetName="ellipsel"
Storyboard.TargetProperty="Fill.GradientStops[0].Color"
To="Pink" Duration="0:0:5">
</ColorAnimation>
<ColorAnimation Storyboard.TargetName="ellipsel"
Storyboard.TargetProperty="Fill.GradientStops[1].Color"
To="Red" Duration="0:0:3">
</ColorAnimation>
<ColorAnimation Storyboard.TargetName="ellipsel"
Storyboard.TargetProperty="Fill.GradientStops[2].Color"
To="Peru" Duration="0:0:5">
</ColorAnimation>
<ColorAnimation Storyboard.TargetName="ellipsel"
Storyboard.TargetProperty="Fill.GradientStops[3].Color"
To="Purple" Duration="0:0:2">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Window.Triggers>
用<Ellipse>标签创建一个圆形图像,给出宽高,设置椭圆填充色径向渐变,下面的代码是图一的图像代码
<Grid>
<Ellipse Name="ellipsel" Width="200" Height="200">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.1,0.1">
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0.3" Color="Pink"/>
<GradientStop Offset="0.5" Color="Purple"/>
<GradientStop Offset="0.7" Color="GhostWhite"/>
<GradientStop Offset="0.9" Color="Pink"/>
<GradientStop Offset="1.2" Color="Purple"/>
<GradientStop Offset="1.6" Color="BlueViolet"/>
<GradientStop Offset="1.6" Color="Purple"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
</Grid>