WPF 基本的前后台代码对照

写cs代码是个人习惯,对着xaml写也能加深理解认识
比如基本的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>

后台对照写法

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);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值