c# WPF实现立方体旋转变色效果
时间: 2024-11-03 21:20:09 浏览: 19
WPF实现3D立方体波浪墙效果
在C# WPF中,要实现一个立方体旋转并变色的效果,可以结合`Canvas`、`RotateTransform`、`ColorAnimation`和`Storyboard`来完成。下面是一个简化的示例:
首先,在`XAML`中创建一个`Canvas`和一个立方体模型:
```xml
<Canvas Width="500" Height="500">
<Canvas.RenderTransform>
<RotateTransform CenterX="250" CenterY="250" Angle="0" />
</Canvas.RenderTransform>
<Rectangle x:Name="Cube" Fill="Red" Width="100" Height="100" Stroke="Black"
Canvas.Left="75" Canvas.Top="75">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(DrawingContext.Fill).(SolidColorBrush.Color)"
From="Red" To="Yellow"
Duration="0:0:5"
RepeatBehavior="Forever">
<ColorAnimation.InterpolationMode>EaseInOut</ColorAnimation.InterpolationMode>
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</Canvas>
```
在这个`XAML`里,我们创建了一个矩形表示立方体,设置了初始颜色为红色。`RenderTransform`用于保持立方体的中心位置不变,而旋转角度会随着程序运行改变。`Loaded`事件触发`Storyboard`开始无限循环地改变填充颜色。
接下来,在`CodeBehind`中添加处理旋转动画的部分:
```csharp
using System.Windows;
using System.Windows.Media.Animation;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 每秒旋转360度
var rotation = new DoubleAnimation(360, Duration = TimeSpan.FromSeconds(1), AutoReverse = true);
cube.RenderTransform.BeginAnimation(RotateTransform.AngleProperty, rotation);
}
}
```
这将在窗口加载后每秒增加一次旋转角度,颜色则按照预设的`Storyboard`循环变化。
阅读全文