WPF 3D:使用变换中的TranslateTransform3D

简介: 原文: WPF 3D:使用变换中的TranslateTransform3D 程序效果:   WPF 3D中的TranslateTransform3D应该是所有3D变换中最简单的变换,使用起来非常简单,先定义好3D对象,接着在适当的位置加入变换就可以了。
原文: WPF 3D:使用变换中的TranslateTransform3D

程序效果:

image

 

WPF 3D中的TranslateTransform3D应该是所有3D变换中最简单的变换,使用起来非常简单,先定义好3D对象,接着在适当的位置加入变换就可以了。

 

当然WPF 3D中变换(Transform3D类型)可以应用在如下属性中:

  • 照相机:Camera类型
  • 3D模型定义:Model3D类型
  • 容纳3D模型的Visual3D:ModelVisual3D类型

 

对于2D的TranslateTransform,只有两个属性X和Y。3D的TranslateTransform则对应OffsetX, OffsetY和OffsetZ属性来调整X,Y,Z三轴的坐标。

 

下面是界面XAML:

<DockPanel>

    <DockPanel.Resources>

        <Style TargetType="Button">

            <Setter Property="HorizontalAlignment" Value="Center"/>

            <Setter Property="Padding" Value="3"/>

        </Style>

    </DockPanel.Resources>

    <StackPanel DockPanel.Dock="Top"

               Background="Gray">

        <Button Click="up_Click"></Button>

        <StackPanel HorizontalAlignment="Center"

                   Orientation="Horizontal">

            <Button Click="left_Click"></Button>

            <Button Click="out_Click"></Button>

            <Button Click="in_Click"></Button>

            <Button Click="right_Click"></Button>

        </StackPanel>

        <Button Click="down_Click"></Button>

    </StackPanel>

    <Viewport3D>

        <Viewport3D.Camera>

            <PerspectiveCamera Position="-2.5 2.5 5" LookDirection="0.5 -0.5 -1"/>

        </Viewport3D.Camera>

        <ModelVisual3D>

            <ModelVisual3D.Content>

                <Model3DGroup>

                    <DirectionalLight Direction="1 0 -7"

                            Color="White"/>

                    <GeometryModel3D>

                        <GeometryModel3D.Geometry>

                            <MeshGeometry3D Positions="-1 1 1, 1 1 1, -1 -1 1, 1 -1 1, -1 1 -1, 1 1 -1, -1 -1 -1, 1 -1 -1

                                                       1 1 1, 1 1 -1, 1 -1 1, 1 -1 -1, -1 1 1, -1 1 -1, -1 -1 1, -1 -1 -1

                                                       -1 1 1, -1 1 -1, 1 1 1, 1 1 -1, -1 -1 1, -1 -1 -1, 1 -1 1, 1 -1 -1"

                                           TriangleIndices="0 2 1, 1 2 3, 5 6 4, 5 7 6

                                                             8 10 9, 9 10 11, 13 14 12, 13 15 14

                                                             16 18 17, 17 18 19, 22 21 20, 22 23 21"/>

                        </GeometryModel3D.Geometry>

                        <GeometryModel3D.Material>

                            <DiffuseMaterial Brush="Green"/>

                        </GeometryModel3D.Material>

                        <GeometryModel3D.BackMaterial>

                            <DiffuseMaterial Brush="Red"/>

                        </GeometryModel3D.BackMaterial>

                    </GeometryModel3D>

                </Model3DGroup>

            </ModelVisual3D.Content>

            <ModelVisual3D.Transform>

                <TranslateTransform3D x:Name="transform" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

    </Viewport3D>

</DockPanel>

 

 

背后代码则是根据功能,把相应Transform的属性进行加减从而达到变换效果。

private void up_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetY++;

}

 

private void left_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetX--;

}

 

private void out_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetZ--;

}

 

private void in_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetZ++;

}

 

private void right_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetX++;

}

 

private void down_Click(object sender, RoutedEventArgs e)

{

    transform.OffsetY;

}

 

目录
相关文章
|
C#
WPF —— 动画缩放变换
`ScaleTransform`用于二维x-y坐标系中对象的缩放,可沿X或Y轴调整。在故事板中,通过RenderTransform.ScaleX和ScaleY属性控制缩放。示例代码展示了如何设置按钮的RenderTransformOrigin、Background等属性,并通过LayoutTransform应用ScaleTransform。当鼠标进入按钮时,EventTrigger启动DoubleAnimation实现X和Y轴的缩放动画。最后,展示了如何将动画集成到自定义按钮样式中。
353 0
|
算法 C# 图形学
WPF绘制深度不同颜色的3D模型填充图和线框图
原文:WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理。通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致。
3626 2
|
C# 图形学 传感器
WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化
原文:WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化 注:最近在做3D机械模型重建方面的软件,需要根据光栅传感器采集的数据绘制3D图形,并显示出色差以及填充和线框图。
1185 2
|
C# 索引 容器
WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画
原文:WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画 利用WPF的ListView控件实现类似于Winform中DataGrid行背景色交替变换的效果,同时增加鼠标的悬停效果。
2101 1
|
C# C++
3ds Max建模,Blend设计,VS2008控制WPF的3D模型例子
原文:3ds Max建模,Blend设计,VS2008控制WPF的3D模型例子 3ds Max建模,Blend设计,VS2008控制WPF的3D模型例子   所用的软件 3ds Max 9.
1359 0
|
C# 索引
好玩的WPF第四弹:用Viewport2DVisual3D实现3D旋转效果
原文:好玩的WPF第四弹:用Viewport2DVisual3D实现3D旋转效果 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/46567895 效果呢就是这么个效果,但是大家要发挥想象力,比如做成一个可以旋转的按钮等等。
1074 0
|
C# Windows 图形学
优化WPF 3D性能
原文:优化WPF 3D性能 Maximize WPF 3D Performance .NET Framework 4.5   As you use the Windows Presentation Foundation (WPF) to build 3D contr...
1486 0
|
C# 小程序
WPF 3D变换应用
原文:WPF 3D变换应用  WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开发效率高,而且也容易上手。         下面给大家演示的是使用在WPF 3D上实现视角变换,通过鼠标拖动来变换观察视角,通过滚轮来放缩视距。
850 0
|
C#
WPF特效-实现3D足球效果
原文:WPF特效-实现3D足球效果 WPF 实现 3D足球效果,效果图如下:  每个面加载不同贴图。                                                          ...
1010 0
|
C#
【C#/WPF】Image图片的Transform变换:平移、缩放、旋转
原文:【C#/WPF】Image图片的Transform变换:平移、缩放、旋转 WPF中图像控件Image的变换属性Transform: 平移 缩放 旋转 即要想实现图片的平移、缩放、旋转,是修改它所在的Image控件的Transform变换属性。
5304 0