WPF自带的3D效果 学习笔记(1)

看了书《WPF编程宝典:使用C#2012和.net4.5 第四版》,看到这个3D效果很棒,书上有些例子跑不通,网上查了一些源码,所以做个笔记。

 

1.界面部分

<Window x:Class="_3dModel2dUi.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_3dModel2dUi"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Margin="3,3,0,0" Click="Button_Click" HorizontalAlignment="Left" VerticalAlignment="Top" Height="21" Width="62"></Button>
        <!--#region 这是旋转滑动条-->
        <Slider Minimum="0"    
                Maximum="360"    
                Height="20"    
                Width="790"    
                VerticalAlignment="Bottom"    
                Value="{Binding ElementName=Roate3DOjbect, Path=Angle}" HorizontalAlignment="Left"/>
        <!--#endregion-->
        <Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera Position="0, 0, 4"/>
            </Viewport3D.Camera>

            <!-- Button on 3D -->
            <Viewport2DVisual3D>
                <!-- Give the plane a slight rotation -->
                <Viewport2DVisual3D.Transform>
                    <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                            <AxisAngleRotation3D x:Name="Roate3DOjbect" Angle="40" Axis="0, 1, 0" />
                        </RotateTransform3D.Rotation>
                    </RotateTransform3D>
                </Viewport2DVisual3D.Transform>

                <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D -->
                <Viewport2DVisual3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
                            TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
                </Viewport2DVisual3D.Geometry>

                <Viewport2DVisual3D.Material>
                    <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
                </Viewport2DVisual3D.Material>

                <StackPanel Orientation="Vertical">
                    <Button Click="Button_Click_1">Hello, 3D</Button>
                    <TextBox Width="100"></TextBox>
                </StackPanel>
                
            </Viewport2DVisual3D>

            <!-- Lights -->
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
                </ModelVisual3D.Content>
                <!--#region 这是xaml灯光旋转的处理-->
                <ModelVisual3D.Transform>
                    <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                            <AxisAngleRotation3D x:Name="Roate3DOjbect2" Axis="1 2 1"/>
                        </RotateTransform3D.Rotation>
                    </RotateTransform3D>
                </ModelVisual3D.Transform>
                <!--#endregion-->
            </ModelVisual3D>
        </Viewport3D>
    </Grid>
</Window>

2.逻辑部分

namespace _3dModel2dUi
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {

        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("fuck you,bitch");
        }
    }
}

完毕...   实现同样的效果,比unity3D舒服多了,生成的运行文件,一共不到50KB

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF是一种用于创建富客户端应用程序的技术,它提供了丰富的控件和特效来增强应用程序的外观和交互性。其中,WPF3D效果使得我们可以在应用程序中创建出令人惊叹的立体效果WPF3D控件主要有Viewport3D和ModelVisual3D等。Viewport3D是一个呈现3D图形的区域,它允许我们在其中放置3D模型等内容。ModelVisual3D则是3D场景中的可视化对象,可以用来表示3D模型、灯光、相机等。 通过使用这些3D控件,我们可以在WPF应用程序中实现各种炫酷的效果。例如,我们可以使用3D模型来创建一个旋转的立方体或球体,添加光照效果让其看起来更真实。我们还可以使用相机控制视角,让用户可以在3D场景中自由移动和查看。 另外,WPF还提供了一些内置的3D效果,例如阴影、透明度、雾化等。通过调整这些效果参数,我们可以进一步改变3D场景的外观和感觉。 需要注意的是,WPF3D效果相对于其他专门的3D引擎(如Unity、Unreal Engine等)来说功能较为有限。但在一般的桌面应用中,使用WPF3D效果已经足够满足大部分需求,并且使用起来相对简单。 总的来说,WPF3D效果为我们提供了一个强大的工具,可以在应用程序中实现各种炫酷的立体效果。无论是创建立体模型、添加光照效果还是调整视角,WPF都能满足我们的需求,并能让我们的应用程序更具吸引力和交互性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值