wpf移动动画,wpf动画几种方式
小丫头比较调皮,为了做个东东来哄一下小丫头,我想到了做一个简单的三维翻转动画。在登录QQ 2013的时候,我看到登录窗口也有类似的动画。
在数据绑定中要翻转对象,估计是得用三维变换,所以我用到了AxisAngleRotation3D,让图形绕着Z轴来旋转。
先看看效果。
是的,就是这样的效果,在控件中,由于涉及三维图形,我先做了两个用户控件,作为正面和背面,然后让它旋转。
设计完用户控件后,就在主窗口上放一个Viewport3D控件,这个是必须的,它是三维模型的容器,如果不用就不知道怎么弄出三维图形来了。具体请看下面的XAML:
窗口x:xmlns= http://模式。微软。 com/winfx/2006/xaml/presentation
xmlns:x= http://模式。微软。 com/winfx/2006/xaml
title=主窗口高度= 420 宽度= 650
xmlns:local=clr-namespace:翻转
Window ResizeMode=NoResize
AllowsTransparency=True
背景=透明
WindowStartupLocation=中央屏幕
格子
网格。行定义
RowDefinition Height=*/
RowDefinition Height=auto/
/网格。行定义
Viewport3D网格Row=0 Margin=3
Viewport3D .照相机
透视摄像机位置= 0 0 800 观察方向= 0 0-1 近平面距离= 100 /
/Viewport3D .照相机
Viewport3D .孩子们
ContainerUIElement3D
Viewport2DVisual3D
Viewport2DVisual3D .几何学
网格几何3d位置=-200 150 0-200-150 0 200-150 0 200 150 0 三角形索引= 0 1 2 0 2 3 纹理坐标= 0 0 0 1 1 1 1 0 /
/Viewport2DVisual3D .几何学
Viewport2DVisual3D .材料
漫射材质视口2d视觉3d .IsVisualHostMaterial=True/
/Viewport2DVisual3D .材料
Viewport2DVisual3D .视觉的
local:UC sample 1宽度= 400 高度= 300 /
/Viewport2DVisual3D .视觉的
/Viewport2DVisual3D
Viewport2DVisual3D
Viewport2DVisual3D .几何学
网格几何3d位置= 200 150 0 200-150 0-200-150 0-200 150 0 三角形索引= 0 1 2 0 2 3 纹理坐标= 0 0 0 1 1 1 1 0 /
/Viewport2DVisual3D .几何学
Viewport2DVisual3D .材料
漫射材质视口2d视觉3d .IsVisualHostMaterial=True/
/Viewport2DVisual3D .材料
Viewport2DVisual3D .视觉的
local:UC sample 2宽度= 400 高度= 300 /
/Viewport2DVisual3D .视觉的
/Viewport2DVisual3D
!-三维变换-
ContainerUIElement3D .改变
旋转变换3d centex= 0.5 CenterY= 0.5 CenterZ= 0.5
旋转变换3D .循环
axisangerotation3d x:Name= axr Angle= 0 Axis= 0 1 0 /
/RotateTransform3D .循环
/RotateTransform3D
/containeruilement 3d .改变
/containeruilement 3d
模型可视化三维(three dimension的缩写)
模型可视化3D .内容
方向灯颜色=透明/
/ModelVisual3D .内容
/ModelVisual3D
/Viewport3D .孩子们
/Viewport3D
堆栈面板网格行=1 边距=0,5,0,6 方向=水平水平对齐=居中
按钮填充=25,5 内容=向前Click=OnClick/
按钮填充=25,5 内容=向后Click=OnClick Margin=12,0,0,0/
按钮填充=25,5 内容=关闭Click=OnClick Margin=12,0,0,0/
/堆栈面板
/网格
/窗口
里面还有几个按钮,我是通过单击按钮来控制动画的,所以,后面还要写必要的处理代码,生成动画。
使用系统;
使用系统。集合。泛型;
使用系统100 . Linq
使用系统。文本;
使用系统。线程。任务;
使用系统窗户。
使用系统窗户。控制
使用系统窗户。数据
使用系统窗户。文档;
使用系统。窗口。输入;
使用系统窗户。媒体
使用系统窗户。媒体。成像
使用系统。窗口。导航;
使用系统。窗口。形状;
使用系统窗户。媒体。Media3D
使用系统窗户。媒体。动画
命名空间翻转
///摘要
///MainWindow.xaml的交互逻辑
////摘要
公共分部类主窗口:windows
公共主窗口()
初始化组件();
私有void OnClick(对象发送方,RoutedEventArgs e)
按钮BTN=e .原始源为按钮;
如果(btn!=空)
字符串s=btn。content . ToString();
If (s== off )
这个。close();
double animation da=new double animation();
达。持续时间=新的持续时间(时间跨度。FromSeconds(1))。
If (s== forward )
达。To=0d
Else if (s== backward )
达。To=180d
this . axr . begin animation(axisangerotation3d。AngleProperty,da);
当图形绕Z轴旋转0度时,表示是正面;如果是180度,就转到后侧。当我们声明Viewport2DVisual3D的坐标模型时。几何,也就是三角叠加模型,要注意逆时针顺序来定义它。如果反过来,那么图形将运行到模型的后面。所以前后图的点的方向正好相反。
三维的东西不好解释,后面我会上传代码供参考。
:http://download..net/detail/tcjiaan/5243065