博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
好玩的WPF第四弹:用Viewport2DVisual3D实现3D旋转效果
阅读量:6199 次
发布时间:2019-06-21

本文共 3025 字,大约阅读时间需要 10 分钟。

原文:

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/46567895

这里写图片描述

效果呢就是这么个效果,但是大家要发挥想象力,比如做成一个可以旋转的按钮等等。

定义一个这样的资源就好。

关键是在Grid里放这么一个东西:

正面:

右侧:

大家对比上面这两个就知道正面的镂空是怎么来的了……

左侧:

后方:

大家先不管MeshGeometry3D这些东西是做什么的,后面我尽量简单快速的讲解它们。

所以先来看看程序的内部。

public partial class MainWindow : Window    {        DispatcherTimer dispatTime = null;        double AxAngle = 90;        public MainWindow()        {            InitializeComponent();            if (dispatTime == null)                dispatTime = new DispatcherTimer();            dispatTime.Tick += new EventHandler(DT_Tick);            dispatTime.Interval = new TimeSpan(0, 0, 0, 0, 2);        }                               private void DT_Tick(object sender, EventArgs e)        {            AxisAngleRot.Angle += 1;            if (AxisAngleRot.Angle >= AxAngle)                dispatTime.Stop();        }        private void FrontSide_PreviewMouseDown(object sender, MouseButtonEventArgs e)        {            AxisAngleRot.Angle = 0;            AxAngle = 90;            dispatTime.Start();        }        private void LeftSide_PreviewMouseDown(object sender, MouseButtonEventArgs e)        {            AxAngle = 360;            dispatTime.Start();        }        private void BackSide_PreviewMouseDown(object sender, MouseButtonEventArgs e)        {            AxAngle = 270;            dispatTime.Start();        }        private void RightSide_PreviewMouseDown(object sender, MouseButtonEventArgs e)        {            AxAngle = 180;            dispatTime.Start();        }    }

像这种程序肯定会涉及到计时器的,就是DT_Tick方法。我将它设置为每次都转动1度,而下面这一行则是间隔的时间。

dispatTime.Interval = new TimeSpan(0, 0, 0, 0, 2);

其余的每个方法都用于调节角度,可以看到在正面时会将角度重置一次。

所以接下来看看Positions是什么意思。

这里写图片描述

原谅我把正方体画歪了,图中另外用箭头指出了“正面”、“右侧”等。

大家看看Positions中都是3个数字一组对吧,这就是一个点,我在图中已经标识出来了。而TriangleIndices中也是3个数字一组,这3个数字指示了Positions中的组合索引(从0开始索引),然后3个数字组成三角形,如图中箭头所指向的。

而TextureCoordinates是WPF的3D纹理坐标,这里就不深究的,后面可以深入探讨写一篇博客。

大家也可以拿源码回去慢慢弄着玩嘛……

所以这篇博客就到此为止咯。掰掰……

你可能感兴趣的文章
BZOJ1024:[SCOI2009]生日快乐(DFS)
查看>>
图解设计模式-Bridge模式
查看>>
删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个...
查看>>
mysql_connect v/s mysql_pconnect
查看>>
织梦友情链接正确的调用方法和技巧
查看>>
假如 Micromedia 没被收购,会不会早于 Apple 推动 H5、CSS3 的发展
查看>>
简洁的 c# 拖动无标题栏窗体
查看>>
899F - Letters Removing
查看>>
Codeforces 961E - Tufurama
查看>>
ListView
查看>>
linux修改ftp上传路径
查看>>
【C语言】第一个C语言小程序 —— 日期算法和万年历
查看>>
eclipse中svn插件在线安装方式
查看>>
js 的 this
查看>>
Cetnos搭建vsftp服务器
查看>>
Js数据类型、Json格式、Json对象、Json字符串
查看>>
C# 特性篇 Attributes
查看>>
隐藏sharepoint列表栏
查看>>
Effective java 读书笔记
查看>>
【学习】在Windows10平台使用Docker ToolBox安装docker(一)
查看>>