我创建了一个全屏的WPF
我正在尝试使用
您可以通过拖动来左右滚动时间轴。在2D版本中,性能非常出色。然而,一旦将画布放置在
这并不像我正在呈现复杂的网格,那么这种性能下降是从哪里来的,我该如何避免它?
为了让您了解如何实现3D透视,我将在此处添加XAML代码,不幸的是它不能单独运行。
Canvas
,代表时间轴。只有时间轴的可见部分被组成,所以(实际上)没有UI元素位于可见范围之外。我正在尝试使用
Viewport3D
为此时间轴添加透视效果。目前得到的结果如下图所示:您可以通过拖动来左右滚动时间轴。在2D版本中,性能非常出色。然而,一旦将画布放置在
Viewport2DVisual3D
中的Viewport3D
中,性能会急剧下降。这并不像我正在呈现复杂的网格,那么这种性能下降是从哪里来的,我该如何避免它?
为了让您了解如何实现3D透视,我将在此处添加XAML代码,不幸的是它不能单独运行。
<Grid Background="{StaticResource BackgroundBrush}">
<Viewport3D ClipToBounds="False">
<Viewport3D.Camera>
<PerspectiveCamera
Position="0 0 5"
LookDirection="0.4 0 -1"
UpDirection="0 1 0" />
</Viewport3D.Camera>
<ContainerUIElement3D>
<ModelUIElement3D>
<AmbientLight Color="White" />
</ModelUIElement3D>
</ContainerUIElement3D>
<Viewport2DVisual3D>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D
TriangleIndices="0,1,2 2,3,0"
TextureCoordinates="0 0, 0 1, 1 1, 1 0">
<MeshGeometry3D.Positions>
<MultiBinding Converter="{StaticResource AspectRatioToPositions}">
<Binding ElementName="TimeLineContainer" Path="Width" />
<Binding ElementName="TimeLineContainer" Path="Height" />
</MultiBinding>
</MeshGeometry3D.Positions>
</MeshGeometry3D>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial
Viewport2DVisual3D.IsVisualHostMaterial="True"
Brush="White" />
</Viewport2DVisual3D.Material>
<Grid
x:Name="TimeLineContainer"
Width="1650" Height="600"
ClipToBounds="True"
Background="{StaticResource TimeLineBrush}"
Behaviors:MouseBehavior.LeftClickDragCommand="ActivityOverview:ActivityOverviewWindow.MouseDragged"
MouseWheel="OnMouseWheel"
MouseMove="OnMouseMoved">
<ActivityOverview:TimeLineControl x:Name="TimeLine" Focusable="True">
<ActivityOverview:TimeLineControl.CommandBindings>
<CommandBinding
Command="ActivityOverview:ActivityOverviewWindow.MouseDragged"
Executed="MoveTimeLine" />
</ActivityOverview:TimeLineControl.CommandBindings>
</ActivityOverview:TimeLineControl>
</Grid>
</Viewport2DVisual3D>
</Viewport3D>
</Grid>