我在WPF C#中创建了一个没有样式的窗口。对于新窗口,我使用 Border 元素。在我内部使用渐变颜色。我的问题是,是否可以自动旋转 LinearGradientBrush 而不旋转其余部分?我希望每秒钟自动旋转一次,或者顺时针方向只旋转边界,而不是更多。
带渐变边框元素的窗口
示例演示我的意思
答案 0 :(得分:0)
我没有打扰圆角,使用不同的颜色而不是猜测你的每一秒让我觉得有点头晕,但这会旋转颜色渐变:
<Border BorderThickness="10">
<Border.BorderBrush>
<LinearGradientBrush x:Name="bbrush">
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Yellow" Offset="0.5" />
<GradientStop Color="Red" Offset="1.0" />
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<EventTrigger RoutedEvent="Border.Loaded">
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<PointAnimation Storyboard.TargetProperty="BorderBrush.(LinearGradientBrush.StartPoint)" From="1, 0" To="0, 1" Duration="00:00:10" />
<PointAnimation Storyboard.TargetProperty="BorderBrush.(LinearGradientBrush.StartPoint)" From="0, 1" To="1, 0" Duration="00:00:10"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
通过旋转画笔,这是另一种方法。 这样做时需要注意的是相当曲折的路径语法,以及画笔具有相对转换而不是渲染转换的事实。
<Border BorderThickness="10">
<Border.BorderBrush>
<LinearGradientBrush x:Name="bbrush">
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Yellow" Offset="0.5" />
<GradientStop Color="Red" Offset="1.0" />
<LinearGradientBrush.RelativeTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" x:Name="rotateBrush" />
</LinearGradientBrush.RelativeTransform>
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<EventTrigger RoutedEvent="Border.Loaded">
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetProperty="(Border.BorderBrush).(Brush.RelativeTransform).(RotateTransform.Angle)"
From="0"
To="359"
Duration="00:00:10" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>