Wpf3d 缩放 window
Wpf3d Zooming for window
我正在尝试对我的 wpf 3d 对象实现缩放功能。当我从我的对象触发它时它工作正常。但是我想为包括对象在内的整个 space 执行此功能。我如何为整个 window 实现此缩放功能,所以如果我从 window 的任何位置滚动鼠标,我的对象将被放大和缩小。
这是我的 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>
`
您的网格上没有设置背景画笔,因此未触发滚轮事件,因为在命中测试期间未检测到它。
<Grid MouseWheel="Grid_MouseWheel" Background="#00000000">
将您的网格设置为如上所示的背景,您应该会发现它有效
编辑:或者您可以将事件挂钩到 window 的 MouseWheel 事件而不是
<Window Title="MainWindow" Height="350" Width="525" MouseWheel="Grid_MouseWheel">
我正在尝试对我的 wpf 3d 对象实现缩放功能。当我从我的对象触发它时它工作正常。但是我想为包括对象在内的整个 space 执行此功能。我如何为整个 window 实现此缩放功能,所以如果我从 window 的任何位置滚动鼠标,我的对象将被放大和缩小。 这是我的 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>
`
您的网格上没有设置背景画笔,因此未触发滚轮事件,因为在命中测试期间未检测到它。
<Grid MouseWheel="Grid_MouseWheel" Background="#00000000">
将您的网格设置为如上所示的背景,您应该会发现它有效
编辑:或者您可以将事件挂钩到 window 的 MouseWheel 事件而不是
<Window Title="MainWindow" Height="350" Width="525" MouseWheel="Grid_MouseWheel">