• WPF 最基本的前后台代码对照


    最基本的3D代码对照

    xaml代码

    <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 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>
    
                    <Button>Hello, 3D</Button>
                </Viewport2DVisual3D>
    
                <!-- Lights -->
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>

    cs后台对照写法

    private void Init_Draw()
            {
                Viewport3D viewport3D = new Viewport3D();
                PerspectiveCamera perspectiveCamera = new PerspectiveCamera()
                {
                    Position = new Point3D(0, 0, 4),
                };
                viewport3D.Camera = perspectiveCamera;
    
                Viewport2DVisual3D viewport2DVisual3D = new Viewport2DVisual3D();
                RotateTransform3D rotateTransform3D = new RotateTransform3D();
                AxisAngleRotation3D axisAngleRotation3D = new AxisAngleRotation3D()
                {
                    Angle = 40,
                    Axis = new Vector3D(0, 1, 0),
                };
                rotateTransform3D.Rotation = axisAngleRotation3D;
                viewport2DVisual3D.Transform = rotateTransform3D;
    
                MeshGeometry3D meshGeometry3D = new MeshGeometry3D()
                {
                    Positions = new Point3DCollection(new Point3D[] { new Point3D(-1, 1, 0), new Point3D(-1, -1, 0), new Point3D(1, -1, 0), new Point3D(1, 1, 0) }),
                    TextureCoordinates = new PointCollection { new Point(0, 0), new Point(0, 1), new Point(1, 1), new Point(1, 0) },
                    TriangleIndices = new Int32Collection(new int[] { 0, 1, 2, 0, 2, 3 }),
                };
                viewport2DVisual3D.Geometry = meshGeometry3D;
    
                DiffuseMaterial diffuseMaterial = new DiffuseMaterial();
                Viewport2DVisual3D.SetIsVisualHostMaterial(diffuseMaterial, true);
                viewport2DVisual3D.Material = diffuseMaterial;
    
    
                Button button = new Button()
                {
                    Content = "Hello,3D",
              Direction = new Vector3D(0, 0, -1), }; viewport2DVisual3D.Visual
    = button; ModelVisual3D modelVisual3D = new ModelVisual3D(); DirectionalLight directionalLight = new DirectionalLight() { Color = Color.FromRgb(255, 255, 255),
    Direction = new Vector3D(0, 0, -1), }; modelVisual3D.Content
    = directionalLight; viewport3D.Children.Add(viewport2DVisual3D); viewport3D.Children.Add(modelVisual3D); Grid组件.Children.Add(viewport3D); }

     引伸一下,按照1:1大小显示原始组件,写入原始宽度和高度。显示出来的是原始UserControl的大小

    private void Init_Draw(FrameworkElement element,double width,double height)
            {
                double Mesh_Width = width / 2;
                double Mesh_Height = height / 2;
    
                Viewport3D viewport3D = new Viewport3D();
                viewport3D.Width = width * 2;
    
                PerspectiveCamera perspectiveCamera = new PerspectiveCamera();
                double fieldOfViewInRadians = perspectiveCamera.FieldOfView * (Math.PI / 180.0);
                var z = (0.5 * viewport3D.Width) / Math.Tan(0.5 * fieldOfViewInRadians);
                perspectiveCamera.Position = new Point3D(0, 0, z);
    
                perspectiveCamera.LookDirection = new Vector3D(0, 0, -1);
                viewport3D.Camera = perspectiveCamera;
    
                Viewport2DVisual3D viewport2DVisual3D = new Viewport2DVisual3D();
                RotateTransform3D rotateTransform3D = new RotateTransform3D();
                axisAngleRotation3D = new AxisAngleRotation3D()
                {
                    Angle = 40,
                    Axis = new Vector3D(0, 1, 0),
                };
                rotateTransform3D.Rotation = axisAngleRotation3D;
                viewport2DVisual3D.Transform = rotateTransform3D;
    
                MeshGeometry3D meshGeometry3D = new MeshGeometry3D()
                {
                    Positions = new Point3DCollection(new Point3D[] { 
                            new Point3D(-Mesh_Width, Mesh_Height, 0),
                            new Point3D(-Mesh_Width, -Mesh_Height, 0),
                            new Point3D(Mesh_Width, -Mesh_Height, 0),
                            new Point3D(Mesh_Width, Mesh_Height, 0)
                        }
                    ),
                    TextureCoordinates = new PointCollection { new Point(0, 0), new Point(0, 1), new Point(1, 1), new Point(1, 0) },
                    TriangleIndices = new Int32Collection(new int[] { 0, 1, 2, 0, 2, 3 }),
                };
                viewport2DVisual3D.Geometry = meshGeometry3D;
    
                DiffuseMaterial diffuseMaterial = new DiffuseMaterial();
                Viewport2DVisual3D.SetIsVisualHostMaterial(diffuseMaterial, true);
                viewport2DVisual3D.Material = diffuseMaterial;
    
                viewport2DVisual3D.Visual = element;
                element.MouseDown += Element_MouseDown;
    
                ModelVisual3D modelVisual3D = new ModelVisual3D();
                DirectionalLight directionalLight = new DirectionalLight()
                {
                    Color = Color.FromRgb(255, 255, 255),
                    Direction = new Vector3D(0, 0, -1),
                };
                modelVisual3D.Content = directionalLight;
    
                viewport3D.Children.Add(viewport2DVisual3D);
                viewport3D.Children.Add(modelVisual3D);
    
                MainGrid.Children.Add(viewport3D);
            }
  • 相关阅读:
    浅谈关于JavaScript解析XML文件的注意事项
    个人总结的Struts2拦截器使用和拦截栈的配置,基于注解的方式
    使用Awstats统计部署在tomcat中的网站数据
    spring4.x + hibernate4.x 配置详解
    Java内部类总结
    Java中static的使用
    Java多线程基础知识总结
    Java线程经典面试题
    C#/.net七牛云存储上传图片(文件)操作
    Special Solver Parameters
  • 原文地址:https://www.cnblogs.com/qiaoke/p/11664775.html
Copyright © 2020-2023  润新知