[UWP-小白日记16]UWP中的3D变换API
还没开始
好久没写博客了,再来开坑。
正文
Transform3D:“这个和CSS的3D好像的说”
PerspectiveTransform3D:这个用来指定容器是否具有3D空间,都是放在根容器下面的。
注意Depth:默认1000,如过设置过大会导致子元素超出容器
<Grid Background="{StaticResource ProcurePageBackground}">
<Grid.Transform3D>
<PerspectiveTransform3D Depth="" />
</Grid.Transform3D>
</Grid>
CompositeTransform3D:需要做3D变换的子元素上设定。
<Border BorderBrush="Black"
BorderThickness=""
Background="#FF0B5B29"
Loaded="Border_Loaded">
<Border.Transform3D>
<CompositeTransform3D ></CompositeTransform3D>
</Border.Transform3D>
<TextBlock Text="" />
</Border>
按着上面的设定一个基本的3D变换就设定完成了
TIPS:注意这玩意有个坑,注意Z-Index!注意Z-Index!注意Z-Index!在XAML上后面的元素会覆盖前面的元素,so,如果你做立方体什么的要自己
计算Z-Index以免后面的元素覆盖前面的元素
实例

注意:3D空间的正负方向,Y轴左转是正,右转是负,这个自己试下就知道了。
实现代码:
<Storyboard x:Name="InSB">
<DoubleAnimation Storyboard.TargetName="LeftGrid"
Storyboard.TargetProperty="(UIElement.Transform3D).(CompositeTransform3D.RotationY)"
Duration="0:0:3"
To=""
EnableDependentAnimation="True"></DoubleAnimation>
</Storyboard>
<Grid Background="{StaticResource ProcurePageBackground}">
<Grid.Transform3D>
<PerspectiveTransform3D Depth="" />
</Grid.Transform3D>
<Grid Name="LeftGrid" Loaded="LeftGrid_Loaded">
<Grid.Transform3D>
<CompositeTransform3D/>
</Grid.Transform3D>
<Border BorderBrush="Red"
BorderThickness=""
Background="#FF11321E">
<TextBlock Text="" />
</Border>
<Border BorderBrush="Black"
BorderThickness=""
Background="#FF0B5B29"
Loaded="Border_Loaded">
<Border.Transform3D>
<CompositeTransform3D />
</Border.Transform3D>
<TextBlock Text="" />
</Border>
</Grid>
</Grid>
注意下面Border_Loaded中temp.TranslateX和temp.RotationY的顺序,你可以自己互换看看有什么不同。
private void LeftGrid_Loaded(object sender, RoutedEventArgs e)
{
var temp = LeftGrid.Transform3D as CompositeTransform3D;
temp.CenterZ = -centePos;
temp.CenterX = centePos;
} private void Border_Loaded(object sender, RoutedEventArgs e)
{
(sender as Border).Width = WidthGrid;
var temp = (sender as Border).Transform3D as CompositeTransform3D;
temp.TranslateX = WidthGrid;
temp.RotationY = -;
}
double centePos;
private double WidthGrid; public MainPage()
{
this.InitializeComponent(); centePos = (this.ActualWidth / ) / ;
WidthGrid = this.ActualWidth / ;
this.SizeChanged += (s, e) =>
{
centePos = (e.NewSize.Width / ) / ;
WidthGrid = e.NewSize.Width / ;
};
}
[UWP-小白日记16]UWP中的3D变换API的更多相关文章
- [UWP小白日记-9]页面跳转过度动画(二)
又打算动手写了 [UWP小白日记-6]页面跳转过度动画 上次写的,这次随着学习的进度使用新的玩法. 最近在搞GIT的学习,结果把好好的项目玩坏,都不知道当时是怎么想的拿在写的APP来玩GIT,害我重写 ...
- WPF中的3D变换PlaneProjection
在UWP中有一个比较好用的伪3D变换PlaneProjection,可以以一种轻量级和非常简单的方式实现3D的效果.这种效果在Silverlight中也有这种变换,但在WPF中确一直没有提供. 虽然W ...
- [UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)
前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Enti ...
- [UWP小白日记-15]在UWP手机端实时限制Textbox的输入
说实话重来没想到验证输入是如此的苦逼的一件事情. 网上好多验证都是在输入完成后再验证,我的想法是在输入的时候就限制输入,这样我就不用再写代码来验证了 应为是手机端,所以不用判断其他非法字符,直 ...
- [UWP小白日记-8]一些零碎的东西
设置启动窗口大小 直接上代码了没什么好解释的了,既然能设置最小,那铁定就能设置最大 public MainPage() { //设定窗口启动显示大小 ApplicationView.Preferred ...
- [UWP小白日记-6]页面跳转过度动画
前言 在学习中发现页面导航默认是没有过度动画的,直接就导航过去太粗暴了( ̄へ ̄),于是打算上动画结果不言而喻自己进了坑完全不懂动画,然后就是各种疯狂(´・_・`)的搜索资料看了后终于有点头绪. 再后来 ...
- [UWP小白日记-5]转换MVA学院的XML字幕为SRT
开源地址:第二版开源地址GIT 暂时用不了了,在最新的WIN10 10586.494系统上回闪退,正在酝酿第二版 O(∩_∩)O哈哈~ 新版已经完工:第二版 地方MVA上好多教程,但是微软的所有中国网 ...
- [UWP小白日记-2]SQLite数据库DOME
数据库说简单点就是增删改查,但是对新手来说也是要爆肝的.作为一个新手爆肝无数次啊, 血的教训啊现在UWP的教程又少,说多了都是泪.留下来免得以后又爆肝.还有:一定要写注释!一定要写注释!一定要写注释! ...
- [UWP小白日记-12]使用新的Composition API来实现控件的阴影
前言 看了好久官方的Windows UI Dev Labs示例好久才有点心得,真是头大.(其实是英语幼儿园水平(⊙﹏⊙)b) 真的网上关于这个API的资料可以说几乎没有. 正文 首先用这东西的添加WI ...
随机推荐
- 摘录-Mybatis - Integer值为0的数据 return false
Mybatis在进行<if test="status != null and status != ''">判空操作时,如果status为0的时候,该判断条件的值为fal ...
- 定时清理tomcat日志文件
原文链接:https://blog.csdn.net/qq_37936542/article/details/78788466 需求:最近公司服务器发现磁盘经常会被占满,查其原因是因为大量的日志文件. ...
- Android Studio上手,基于VideoView的本地文件及流媒体播放器
既然是第一个Android程序.少不了要Hello World. 1. 新建安卓project watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm0wNTE ...
- 【hdu 2486】A simple stone game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- github push出错(1)You can't push to git:// Use https://
fatal: remote error: You can't push to git://github.com/niexiaobo/remote.git Use https://github.com/ ...
- radio选择事件 onchange事件 onclick事件
单选框按钮(radio)选择事件怎么设置呢? 既可以在radio标签里设置onclick事件实现,也可以设置它的onchange事件实现,效果一样,代码如下: <input id="r ...
- 【27.66%】【codeforces 592D】Super M
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- C++技术问题总结-第0篇 类型转换
从今天開始,对C++经常使用技术做个总结. 參考书籍:<C++Primer>.<C++对象模型>.<设计模式>.<Windows核心编程>.<ST ...
- C#6
C#6 1. 只读自动属性(Read-only auto-properties) C# 6之前我们构建只读自动属性: 1 public string FirstName { get; privat ...
- TabHost两种实现方式
第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.只要定义具体Tab内容布局就行了. <?xml version="1.0 ...