亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

基于WPF實現3D畫廊動畫效果的示例代碼

wpf
小云
147
2023-08-17 14:37:44
欄目: 編程語言

下面是一個基于WPF實現3D畫廊動畫效果的示例代碼:

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Media.Media3D;

namespace WPF3DGallery

{

    public partial class MainWindow : Window

    {

        private const double AngleIncrement = 30;

        private const double ScaleIncrement = 0.1;

        private PerspectiveCamera _camera;

        private Model3DGroup _modelGroup;

        private Point _lastMousePosition;

        public MainWindow()

        {

            InitializeComponent();

            CreateScene();

        }

        private void CreateScene()

        {

            // 創建3D場景

            _modelGroup = new Model3DGroup();

            _modelGroup.Children.Add(CreateCubeModel(new Point3D(-100, 0, 0), Colors.Red));

            _modelGroup.Children.Add(CreateCubeModel(new Point3D(0, 0, 0), Colors.Green));

            _modelGroup.Children.Add(CreateCubeModel(new Point3D(100, 0, 0), Colors.Blue));

            // 創建燈光

            var directionalLight = new DirectionalLight(Colors.White, new Vector3D(0, -0.5, -1));

            _modelGroup.Children.Add(directionalLight);

            // 設置相機

            _camera = new PerspectiveCamera(new Point3D(0, 0, 200), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0));

            // 將模型和相機添加到Viewport3D中

            var viewport = new Viewport3D();

            viewport.Camera = _camera;

            viewport.Children.Add(_modelGroup);

            // 設置Viewport3D為窗口的內容

            Content = viewport;

        }

        private GeometryModel3D CreateCubeModel(Point3D position, Color color)

        {

            var mesh = new MeshGeometry3D();

            mesh.Positions.Add(new Point3D(-50, -50, 50));

            mesh.Positions.Add(new Point3D(50, -50, 50));

            mesh.Positions.Add(new Point3D(-50, 50, 50));

            mesh.Positions.Add(new Point3D(50, 50, 50));

            mesh.Positions.Add(new Point3D(-50, -50, -50));

            mesh.Positions.Add(new Point3D(50, -50, -50));

            mesh.Positions.Add(new Point3D(-50, 50, -50));

            mesh.Positions.Add(new Point3D(50, 50, -50));

            mesh.TriangleIndices.Add(0);

            mesh.TriangleIndices.Add(1);

            mesh.TriangleIndices.Add(2);

            mesh.TriangleIndices.Add(2);

            mesh.TriangleIndices.Add(1);

            mesh.TriangleIndices.Add(3);

            mesh.TriangleIndices.Add(4);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(6);

            mesh.TriangleIndices.Add(6);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(7);

            mesh.TriangleIndices.Add(2);

            mesh.TriangleIndices.Add(3);

            mesh.TriangleIndices.Add(6);

            mesh.TriangleIndices.Add(6);

            mesh.TriangleIndices.Add(3);

            mesh.TriangleIndices.Add(7);

            mesh.TriangleIndices.Add(0);

            mesh.TriangleIndices.Add(2);

            mesh.TriangleIndices.Add(4);

            mesh.TriangleIndices.Add(4);

            mesh.TriangleIndices.Add(2);

            mesh.TriangleIndices.Add(6);

            mesh.TriangleIndices.Add(1);

            mesh.TriangleIndices.Add(0);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(0);

            mesh.TriangleIndices.Add(4);

            mesh.TriangleIndices.Add(1);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(3);

            mesh.TriangleIndices.Add(3);

            mesh.TriangleIndices.Add(5);

            mesh.TriangleIndices.Add(7);

            var material = new DiffuseMaterial(new SolidColorBrush(color));

            return new GeometryModel3D(mesh, material)

            {

                Transform = new TranslateTransform3D(position.X, position.Y, position.Z)

            };

        }

        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)

        {

            _lastMousePosition = e.GetPosition(this);

            CaptureMouse();

        }

        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)

        {

            ReleaseMouseCapture


0
阜新市| 米脂县| 根河市| 云龙县| 拉萨市| 宣威市| 嘉禾县| 兰考县| 聂荣县| 余江县| 巴楚县| 天峨县| 康保县| 巴东县| 三穗县| 定兴县| 临泉县| 全州县| 新和县| 东台市| 泰安市| 和静县| 三原县| 清水河县| 通化市| 琼海市| 呈贡县| 寿宁县| 廉江市| 绿春县| 云阳县| 怀仁县| 仙居县| 社旗县| 大城县| 酉阳| 龙海市| 天气| 浮山县| 婺源县| 比如县|