wpf移动动画,wpf动画几种方式

  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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: