Viewport3D ModelVisuals3D не виден, когда внутри холста
-
28-09-2019 - |
Вопрос
Если я поставлю Viewport3D внутри холсте, мой Viewport3D больше не виден. Если я удалю Canvas, то Viewport3D снова виден. Что я делаю не так?
<Canvas Width="900" Height="524">
<Viewport3D Name="mainViewport" ClipToBounds="True" HitTestVisible="False">
<Viewport3D.Camera>
<PerspectiveCamera
FarPlaneDistance="3500"
LookDirection="0,0,1"
UpDirection="0,1,0"
NearPlaneDistance="1"
Position="0,0,0"
FieldOfView="66" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Canvas>
Решение
Я думаю, что Viewport3D будет в конечном итоге в верхнем левом углу холста с шириной и высотой 0, так как холст никогда не протягивает своих детей. Попробуйте добавить canvas.left и canvas.top в позиционировании вашего выбора, а затем добавьте ширину и высоту для вашей области viewport3d. Если вы хотите, чтобы ваша Viewport3D всегда заполнила доступное пространство, то Canvas является неправильным способом.
<Canvas Width="900" Height="524">
<Viewport3D Canvas.Left="100"
Canvas.Top="100"
Width="200"
Height="200"
Name="mainViewport"
ClipToBounds="True"
IsHitTestVisible="False">
<Viewport3D.Camera>
<PerspectiveCamera
FarPlaneDistance="3500"
LookDirection="0,0,1"
UpDirection="0,1,0"
NearPlaneDistance="1"
Position="0,0,0"
FieldOfView="66" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Canvas>
Не связан с StackOverflow