[UWP-小白日记16]UWP中的3D变换API

简介: 原文:[UWP-小白日记16]UWP中的3D变换API还没开始   好久没写博客了,再来开坑。 正文   Transform3D:“这个和CSS的3D好像的说”   PerspectiveTransform3D:这个用来指定容器是否具有3D空间,都是放在根容器下面的。
原文: [UWP-小白日记16]UWP中的3D变换API

还没开始

  好久没写博客了,再来开坑。


正文

  Transform3D:“这个和CSS的3D好像的说”

  PerspectiveTransform3D:这个用来指定容器是否具有3D空间,都是放在根容器下面的。

  注意Depth:默认1000,如过设置过大会导致子元素超出容器

<Grid Background="{StaticResource ProcurePageBackground}">
        <Grid.Transform3D>
            <PerspectiveTransform3D Depth="4000" />
        </Grid.Transform3D>
</Grid>

  CompositeTransform3D:需要做3D变换的子元素上设定。

<Border BorderBrush="Black"
              BorderThickness="4"
              Background="#FF0B5B29"
              Loaded="Border_Loaded">
                <Border.Transform3D>
                    <CompositeTransform3D ></CompositeTransform3D>
                </Border.Transform3D>
                <TextBlock Text="2" />
</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="90"
                             EnableDependentAnimation="True"></DoubleAnimation>
 </Storyboard>

 

<Grid Background="{StaticResource ProcurePageBackground}">
        <Grid.Transform3D>
            <PerspectiveTransform3D Depth="1000" />
        </Grid.Transform3D>
     <Grid Name="LeftGrid" Loaded="LeftGrid_Loaded">
            <Grid.Transform3D>
                <CompositeTransform3D/>
            </Grid.Transform3D>
            <Border BorderBrush="Red"
                    BorderThickness="4"
                    Background="#FF11321E">
                <TextBlock Text="1" />
            </Border>
            <Border BorderBrush="Black"
                    BorderThickness="4"
                    Background="#FF0B5B29"
                    Loaded="Border_Loaded">
                <Border.Transform3D>
                    <CompositeTransform3D />   
                </Border.Transform3D>
                <TextBlock Text="2" />
            </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 = -90;
        }
double centePos;
private double WidthGrid;

public MainPage()
        {
            this.InitializeComponent();

            centePos = (this.ActualWidth / 2) / 2;
            WidthGrid = this.ActualWidth / 2;
            this.SizeChanged += (s, e) =>
            {
                centePos = (e.NewSize.Width / 2) / 2;
                WidthGrid = e.NewSize.Width / 2;
            };
        }

 

目录
相关文章
|
5月前
|
API C# 图形学
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
71 1
|
JavaScript 前端开发 定位技术
Vue 集成腾讯地图基础api Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记)
Vue 集成腾讯地图基础api Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记)
858 0
Vue 集成腾讯地图基础api  Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记)
|
前端开发 API 开发者
3D Real 开发者工具 API threed-real-sdk.js
GitHub:https://github.com/BaiFeng3DREAL/threed-real-viewer详情:https://www.3dreal.com 用途 3D Real 开发者工具,可以帮助您开发自己的三维产品展示页面,提供了高度自定义的接口。
|
JavaScript 定位技术 API
ArcGIS API for JavaScript4.x 之加载2D、3D地图
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/81545607 ArcGIS AP...
1492 0
|
API
UWP中使用Composition API实现吸顶(2)
原文:UWP中使用Composition API实现吸顶(2) 在上一篇中我们讨论了不涉及Pivot的吸顶操作,但是一般来说,吸顶的部分都是Pivot的Header,所以在此我们将讨论关于Pivot多个Item关联同一个Header的情况。
842 0
|
API C# Windows
UWP中使用Composition API实现吸顶(1)
原文:UWP中使用Composition API实现吸顶(1) 前几天需要在UWP中实现吸顶,就在网上找了一些文章: 吸顶大法 -- UWP中的工具栏吸顶的实现方式之一 在UWP中页面滑动导航栏置顶 发现前人的实现方式大多是控制ListViewBase的Header变换高度,或者建立一个ScrollViewer在里面放置ListViewBase。
1666 0
|
API 开发工具
UWP Composition API - New FlexGrid 锁定行列
原文:UWP Composition API - New FlexGrid 锁定行列 如果之前看了 UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包 这篇的童鞋,针对VS2017,需要对应更新一下配置,需要的童鞋点击查看一下,在文章最后。
1190 0
|
API Windows
UWP Composition API - 锁定列的FlexGrid
原文:UWP Composition API - 锁定列的FlexGrid 需求是第一列锁定,那么怎么让锁定列不跟着滚动条向做移动呢? 其实很简单,让锁定列跟scrollviewer的滚动做反方向移动。
1308 0
|
API
UWP Composition API - GroupListView(一)
原文:UWP Composition API - GroupListView(一) 需求: 光看标题大家肯定不知道是什么东西,先上效果图: 这不就是ListView的Group效果吗?? 看上去是的。
1262 0
|
API
UWP Composition API - GroupListView(二)
原文:UWP Composition API - GroupListView(二) 还是先上效果图: 看完了上一篇UWP Composition API - GroupListView(一)的童鞋会问,这不是跟上一篇一样的吗??? 骗点击的?? No,No,其实相对上一个有更简单粗暴的方案,因为上篇是为了研究Composition API,所以含着泪都要做完(有没有被骗的赶脚)。
1264 0