Wpf3d缩放窗口

时间:2016-06-29 11:57:36

标签: c# wpf wpf-controls wpftoolkit

我正在尝试为我的wpf 3d对象实现缩放功能。当我从我的对象触发它时它工作正常。但我想为我的整个空间(包括对象)执行此功能。如何为整个窗口实现此缩放功能,因此如果我从窗口的任何位置鼠标滚轮,我的对象将放大并放大。 这是我的MouseWheel事件代码:

    private void Grid_MouseWheel(object sender, MouseWheelEventArgs e)
    {
       TheCamera.Position = new Point3D((TheCamera.Position.X - e.Delta / 360D), (TheCamera.Position.Y - e.Delta / 360D), (TheCamera.Position.Z - e.Delta / 360D));
    }

这是我的xaml代码,

`     

    <Viewport3D x:Name="MainViewport">
        <Viewport3D.Camera>
            <PerspectiveCamera x:Name="TheCamera" Position="-40,40,40" LookDirection="40,-40,-40 " 
                     UpDirection="0,0,1" />
        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <Model3DGroup>
                    <DirectionalLight Color="White" Direction="-1,-1,-3" />
                    <GeometryModel3D x:Name="mGeo">
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions="0,0,0 10,0,0 10,10,0 0,10,0 0,0,10 
                    10,0,10 10,10,10 0,10,10"
                    TriangleIndices="0 1 3 1 2 3  0 4 3 4 7 3  4 6 7 4 5 6 
                                     0 4 1 1 4 5  1 2 6 6 5 1  2 3 7 7 6 2"/>
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial Brush="Red"/>
                        </GeometryModel3D.Material>
                    </GeometryModel3D>
                </Model3DGroup>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>

</Grid>

`

1 个答案:

答案 0 :(得分:0)

您的网格没有设置背景画笔,因此在命中测试期间未检测到轮子事件,因为它未被检测到。

<Grid MouseWheel="Grid_MouseWheel" Background="#00000000">

使用如上所示的背景设置网格,你会发现它的工作原理

编辑:或者你可以将事件挂钩到窗口的MouseWheel事件

<Window Title="MainWindow" Height="350" Width="525" MouseWheel="Grid_MouseWheel">