所谓透视效果,就是在平面坐标空间上模拟出“好像”三维的效果。要是老周没有记错的话,以前在写WP8相关的内容时写过,UWP中的透视方法也保留了以前的Do法,其实这玩意儿是从 Silverlight 沿袭下来的。不过,UWP添加了一些三维变换相关的东东,这个老周以后会跟大伙儿聊,今天咱们还是先了解透视效果。

UiElement这个可视化对象的公共基类公开了一个Projection属性,可以用于设置对象的透视参数,它的类型是 Projection,可是,Projection 是抽象类,是不能拿来用的,而 Projection 类只有一个子类——PlaneProjection,所以,我们实际上用的就是PlaneProjection这个家伙。

这个类公开一堆属性,表面上好像很多属性,实际就那么几组:

1、旋转。包括绕X,Y,Z三个轴旋转的角度,这里就三个属性了。

2、平移,平移有两组,Local开头的表示移动是相对于对象本身的,同样有X,Y,Z三个轴的方向;第二组是以Global开头的,表示全局位移,坐标位置相对于屏幕坐标,也是有X,Y,Z三个轴上的移动量。这两组坐标用起来差不多,只是参照系不同,一个是相对于对象自己,另一个是相对于屏幕坐标。

3、旋转中心点,说白了这几个以CenterOfRotation开头的值也是有X,Y,Z三个轴上的值,设置对象旋转的中心点坐标。坐标采用相对值,即每个值的范围为0到1,当然包括0和1。比如,在X轴上,0表示旋转中心位于最左端,如果是1说明旋转中心在对象的最右端。要是0.5,表示旋转中心位于对象的中央。

所以,分组一看,你就发现,其实PlaneProjection类的属性就不多了。

随后我们要了解的就是坐标空间是怎么定义的,其实不难,你看老周给你画一张全宇宙最丑的草图。

毫无疑问,这张图是人类文明史上最难看的,但是,你从中可以知道,假设咱们目不转睛地盯着屏幕,因为屏幕里面有美女。这时候,屏幕中水平方向的就是X轴,正方向向右;屏幕垂直方向的就是Y轴,正方向向上。呀,那Z轴死哪儿去了?Z轴的正方向正指着你呢,警告你别乱看,否则小心一把利箭从屏幕里射出来,箭头正对着你的心呢,看来看美女是有风险的。

现在,坐标空间的定义你都懂了吧?不懂的话,回去打开显示屏,然后你盯着它看,看到明白为止。

由于这个透视效果用起来实在太简单了,咱们就不要上代码了吧,看看老周给你准备的效果图。

先看旋转的。

照片里的景点去过吧?莺莺塔,不知道的查旅游地图,有空可以去玩玩,那里还可以做声波反射实验,你在塔下鼓掌,声音会变成蛙鸣声。

再看看平移的。

好了,透视是很简单的,但三维变换就稍有点难了,关于三维变换,后面再讲。

示例源代码下载。

【Win 10 应用开发】透视效果的更多相关文章

  1. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  2. 【Win 10 应用开发】导入.pfx证书

    这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...

  3. 【Win 10应用开发】Adaptive磁贴模板的XML文档结构

    在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win ...

  4. 【Win 10 应用开发】RTM版的UAP项目解剖

    Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家 ...

  5. 【Win 10应用开发】认识一下UAP项目

    Windows 10 SDK预览版需要10030以上版本号的Win 10预览版系统才能使用.之前我安装的9926的系统,然后安装VS 2015 CTP 6,再装Win 10 SDK,但是在新建项目后, ...

  6. 【Win 10 应用开发】在代码中加载文本资源

    记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...

  7. 【Win 10应用开发】延迟共享

    延迟共享是啥呢,这么说吧,就是在应用程序打开共享面板选择共享目标时,不会设置要共享的数据,而是等到共享目标请求数据时,才会发送数据,而且,延迟操作可以在后台进行. 这样说似乎过于抽象,最好的诠释方法, ...

  8. 【Win 10 应用开发】Toast通知激活应用——前台&后台

    老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话, ...

  9. 【Win 10 应用开发】InkToolBar——涂鸦如此简单

    从WPF开始,就有个InkCanvas控件,封装了数字墨迹处理相关的功能,Silverlight到Win 8 App,再到UWP应用,都有这个控件,所以,老周说了3688遍,凡是.net基础扎实者,必 ...

随机推荐

  1. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  2. 背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  3. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  4. Java 8五大主要功能为开发者提供了哪些便利?

    两年前当Java 8发布后,立即受到了业界的欢迎,因为它大大提高了Java的性能.它独特的卖点是,顾及了编程语言的每一个方面,包括JVM(Java虚拟机)和编译器,并且改良了其它帮助系统. Java是 ...

  5. Electron使用与学习--(页面间的通信)

    目录结构: index.js是主进程js. const electron = require('electron') const app = electron.app const BrowserWin ...

  6. OpenCASCADE Shape Location

    OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...

  7. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  8. 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题

    VS2012,  创建或打开C++浏览数据库文件*.sdf时发生错误. IntelliSense 和浏览信息将不能用于C++项目. 请确保已安装 Microsoft SQL Server Compac ...

  9. TFS 测试用例步骤数据统计

    TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...

  10. UML图中经常用到几种的关系图例

    学习这个东西挺奇怪的,时间一长就容易忘记,或者记不清楚.今天看到一些UML图的关系,发现有些出入了,索性就写下来,以后再忘记的时候过来看看. 在UML的类图中,常见的有以下几种关系: 继承(Gener ...