wpf实现3d翻转的动画效果(代码片段)

东方甲乙木 东方甲乙木     2022-11-06     395

关键词:

1、前端代码实现

1.1 原理见代码注析

 1 <Grid MouseDown="Grid_MouseDown">
 2     <Viewport3D>
 3         <Viewport3D.Camera>
 4             <!-- Position属性指定3D空间中摄像机的位置,LookDirection属性为摄像机方向 -->
 5             <PerspectiveCamera Position="0 0 500" LookDirection="0 0 -1" />
 6         </Viewport3D.Camera>
 7         <Viewport3D.Children>
 8             <ContainerUIElement3D>
 9                 <Viewport2DVisual3D>
10                     <Viewport2DVisual3D.Geometry>
11                         <!-- Positions属性表示绘制对象的点集合,TriangleIndices属性表示对象的正反面(WPF通过逆时针环绕表示正面),TextureCoordinates属性表示2D纹理映射到3D对象 -->
12                         <!-- 一般通过3D建模工具推导得出 -->
13                         <MeshGeometry3D Positions="-200 200 0  -200 -200 0  200 -200 0  200 200 0" TriangleIndices="0 1 2  0 2 3" TextureCoordinates="0 0  0 1  1 1  1 0"/>
14                     </Viewport2DVisual3D.Geometry>
15                     <Viewport2DVisual3D.Material>
16                         <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
17                     </Viewport2DVisual3D.Material>
18                     <Viewport2DVisual3D.Visual>
19                         <!-- 放置正面自定义用户控件 -->
20                         <Page:Win1 Width="400" Height="400"/>
21                     </Viewport2DVisual3D.Visual>
22                 </Viewport2DVisual3D>
23                 <Viewport2DVisual3D>
24                     <Viewport2DVisual3D.Geometry>
25                         <MeshGeometry3D Positions="200 200 0  200 -200 0  -200 -200 0  -200 200 0" TriangleIndices="0 1 2  0 2 3" TextureCoordinates="0 0  0 1  1 1  1 0"/>
26                     </Viewport2DVisual3D.Geometry>
27                     <Viewport2DVisual3D.Material>
28                         <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
29                     </Viewport2DVisual3D.Material>
30                     <Viewport2DVisual3D.Visual>
31                         <!-- 放置反面自定义用户控件 -->
32                         <Page:Win2 Width="400" Height="400"/>
33                     </Viewport2DVisual3D.Visual>
34                 </Viewport2DVisual3D>
35                 <ContainerUIElement3D.Transform>
36                     <RotateTransform3D>
37                         <RotateTransform3D.Rotation>
38                             <!-- 设置旋转轴为对齐坐标系统的Y轴 -->
39                             <AxisAngleRotation3D x:Name="aar" Angle="0" Axis="0 1 0"/>
40                         </RotateTransform3D.Rotation>
41                     </RotateTransform3D>
42                 </ContainerUIElement3D.Transform>
43             </ContainerUIElement3D>
44             <ModelVisual3D>
45                 <ModelVisual3D.Content>
46                     <!-- 设置指定方向传播的平行光线填充场景 -->
47                     <DirectionalLight Color="Transparent"/>
48                 </ModelVisual3D.Content>
49             </ModelVisual3D>
50         </Viewport3D.Children>
51     </Viewport3D>
52 </Grid>

2、后端代码实现

2.1 通过鼠标单击翻转动画180度显示对象反面,鼠标双击翻转动画0度显示对象正面。

 1 private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
 2 
 3     DoubleAnimation da = new DoubleAnimation();
 4     da.Duration = new Duration(TimeSpan.FromSeconds(1));
 5     if (e.ClickCount == 2)
 6         da.To = 0d;
 7     else
 8         da.To = 180d;
 9     AxisAngleRotation3D aar = Application.Current.MainWindow.FindName("aar") as AxisAngleRotation3D;
10     aar.BeginAnimation(AxisAngleRotation3D.AngleProperty, da);  
11 

android登录3d翻转动画效果(代码片段)

...!!!!跳转到最后控件效果如下:实现功能:使页面进行3D翻转(3D翻转效果)可通过回调监听两个页面的显隐设计核心:主要的设计核心是依赖于Camera来进行视觉上深度的放大和缩小,而... 查看详情

wpf特效-鱼游动动画(代码片段)

原文:WPF特效-鱼游动动画 ?实现思路:?????通过VisualBrushBinding方式获取鱼局部图像,在Viewport3D中创建ModelVisual3D块并把获取到的局部图通过VisualBrushBinding方式赋值。然后对ModelVisual3D块写3D动画。?????我的鱼原始图:实现的效果:... 查看详情

wpf画线动画效果实现(代码片段)

原文:WPF画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现。看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~千辛万苦终于找到了一个Demo,打开一看,代码... 查看详情

wpf实现渐变淡入淡出的动画效果(代码片段)

原文:WPF实现渐变淡入淡出的动画效果1、实现原理1.1利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔。可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果。1.2OpacityMask属性接受任何画刷,可利用Linea... 查看详情

使用electron实现类似新版qq的登录界面效果(阴影背景动画窗体3d翻转)

现在什么都讲究追赶潮流,觉得QQ登录窗口做的效果不错,既然刚学习electron,那么就用electron模仿一下。其实主要用到的就是CSS3的效果:边框圆角、阴影,3D变换。对,就这么简单。先上效果:下面是关键代码:app.js ?12345678... 查看详情

android自定义露一手,轻松实现view3d翻转效果(代码片段)

作者:itfitness目录效果展示关键知识点这个3D翻转效果的核心其实就是Rotate3DAnimation这个自定义的Animation类。publicclassRotate3DAnimationextendsAnimationprivateintmCenterX,mCenterY;privateCameramCamera;privatefloatmFromDegrees,mT 查看详情

如何实现wpf窗体旋转

...转到后面去了,求指导,谢谢。参考技术A用WPF的动画类实现窗口在平面画面上的翻转效果。 参考技术B这个博客上有较为详细的介绍:用的是WPF的3D效果:http://blog.csdn.net/tcjiaan/article/details/8784068 参考技术C你去查看Wpf之葵花宝典... 查看详情

使用electron实现类似新版qq的登录界面效果(阴影背景动画窗体3d翻转)

上文《使用VS2017和js进行桌面程序开发-electron之HelloWord》介绍了如何使用 VS2017开发 electron桌面程序,今天来点有看头的,但是没什么技术含量,囧~~现在什么都讲究追赶潮流,觉得QQ登录窗口做的效果不错,既然刚学习&nbs... 查看详情

wpf钟表效果实现(代码片段)

原文:WPF钟表效果实现WPF在样式定义和UI动画上面相对于以前的技术有了不少的提升,下面给出WPF技术实现钟表的效果:1、VisualStudio新建一个WPF应用程序,命名为WpfClock,新建一个images文件夹,并准备一个钟表的背景图片和程序图... 查看详情

wpf实现qq群文件列表动画(代码片段)

原文:WPF实现QQ群文件列表动画(一)  QQ群大家都用过,先看下目前QQ的群文件列表容器的效果:  细心点大家就会发现,这玩意收缩和展开是带动画的,并不是很僵硬地直接收缩或者直接展开,毫无疑问,如果用WPF实现这... 查看详情

css具有动画翻转/悬停效果的灰度翻转图像(代码片段)

查看详情

wpf抽屉效果(代码片段)

...可以通过点击或者拖拽这个按钮,让页面显示。Wpf也可以实现相同的效果。 主要是通过一个DoubleAnimation和RectAnimation动画实现<GridHorizontalAlignment="Center"Width="90"Height="130"Background="Blue"> 查看详情

代码创建wpf旋转翻转动画(汇总)(代码片段)

原文:代码创建WPF旋转、翻转动画(汇总)先建立一个button<ButtonWidth="80"Height="60"Content="旋转"Name="trans"Click="trans_Click"Style="x:Null"/>方法一:绕左上角旋转publicvoidTransform1()RotateTransformrtf=newRotateTransform();trans.RenderTransform=rtf;DoubleAni... 查看详情

css33d翻转动画

...中产生的动画animation(动画):定义关键帧动画CSS3可以实现多种动画效果,下面说的是CSS3实现一个3D翻转的动画效果。<divclass="container"><divclass="wrapHover><divcla 查看详情

玩转css3的3d动画效果(代码片段)

效果展示基础知识transform-style:启用3D模式要利用CSS3实现3D的效果,最主要的就是借助 transform-style 属性。transform-style 只有两个值可以选择://语法:transform-style:flat|preserve-3d;transform-style:flat;//默认,子元 查看详情

css3实现酷炫的3d盒子翻转效果

 简介  运用css3先在平面空间组成立方体盒子,再让整个盒子翻转起来,先来张效果图:   步骤1.先用css将6张图片摆成下图的样子:下面就是通过css3的3D变换将每个面进行翻转,使之成为一个立体的盒子,... 查看详情

wpf实现3d翻转倒计时控件~

WPF开发者QQ群: 340500857     由于微信群人数太多入群请添加小编微信号 yanjinhuawechat或W_Feng_aiQ 邀请入群 需备注WPF开发者  PS:有更好的方式欢迎推荐。 接着上一篇倒计时控件01—代码如下一、创建 NumberCardControl.xa... 查看详情

wpf实现左右移动(晃动)动画效果

原文:WPF实现左右移动(晃动)动画效果 实现控件或布局的左右移动(晃动)主要用到DoubleAnimation以及Storyboard布局代码为:<Canvas><GridWidth="200"Height="100"Background="MediumAquamarine"Name="GroupboxArea"Canva 查看详情