所谓透视效果,就是在平面坐标空间上模拟出“好像”三维的效果。要是老周没有记错的话,以前在写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. 关于textview显示特殊符号居中的问题

    话说这是2017年的第一篇博客,也是一篇技术博客.先从简单的一篇解决问题开始吧,千里之行,始于足下! ------------------------------------------------- ...

  2. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  3. ABP文档 - 本地化

    文档目录 本节内容: 简介 应用语言 本地化源 XML文件 注册XML本地化源 JSOn文件 注册JSON本地化源 资源文件 自定义源 获取一个本地文本 在服务端 在MVc控制器里 在MVC视图里 在 ...

  4. 深入node之Transform

    Transform流特性 在开发中直接接触Transform流的情况不是很多,往往是使用相对成熟的模块或者封装的API来完成流的处理,最为特殊的莫过于through2模块和gulp流操作.那么,Tra ...

  5. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  6. C# 程序中嵌入百度地图

    本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点: WebB ...

  7. JQuery实现表格的增加行和删除行

    利用JQuery实现datatables插件的增加和删除行操作 在学习过程中遇到了这个利用JQuery对表格行的增加和删除,特记录下来以供初学者参考. 下面是主要的代码: <meta http- ...

  8. 微信小程序开发—快速掌握组件及API的方法

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  9. class-dump 反编译私有的库和应用

    一.下载并安装class-dump 下载class-dump-3.5.dmg  点击下载 下载完成以后双击.dmg的文件,将里面的class-dump拷贝到/usr/local/bin 设置权限chm ...

  10. TFS 2015 敏捷开发实践 – 看板的使用

    看板在现代应用开发过程中使用非常广泛,不管是使用传统的瀑布式开发还是敏捷开发,都可以使用看板管理.因为看板拥有简单的管理方法,直观的显示方式,所以很多软件开发团队选择使用看板进行软件开发管理.本文不在 ...