Ho Viewport3D nella finestra. cambierà la dimensione quando la dimensione della finestra cambierà.Come si calcola WPF tutte le impostazioni della telecamera in modo dinamico nel codice?
<Window>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition/>
<Grid.RowDefinitions>
<Label Grid.Row="0" Content="top label"/>
<Viewport3D Grid.Row="1" x:Name="vp3D" >
<Viewport3D.Camera >
<PerspectiveCamera x:Name="pCamera" LookDirection="0 0 -1" UpDirection="0 1 0" />
</Viewport3D.Camera>
<Viewport2DVisual3D x:Name="v2dv3d">
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D x:Name="mg3d" TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
</Viewport2DVisual3D.Material>
<Image Height="{Binding ElementName=vp3D, Path=ActualHeight}" Width="{Binding ElementName=vp3D, Path=ActualWidth}" Stretch="Fill"/>
</Viewport2DVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Grid>
</Window
Ora Voglio che l'immagine mostra sulla come se fosse la finestra 2D originale (simile non è cambiato nulla, ma in realtà l'immagine è 3d).
Ma il problema è Se voglio che abbia lo stesso aspetto dell'aspetto originale di WPF, devo modificare alcune impostazioni della Fotocamera, come PerspectiveCamera.Position
o MeshGeometry3D.Position
. poiché lo Viewport3D
modifica dinamicamente la dimensione quando la finestra cambia dimensione, devo calcolare dinamicamente le impostazioni Viewport3D
. C'è comunque da fare?
Ho già provato questo, ma non si può calcolare correttamente: WPF 3D: Fitting entire image to view with PerspectiveCamera
Ho fatto del mio meglio e ho letto la tua domanda due volte, ma ancora non la capisco. Stai cercando di avere quell'immagine come sfondo dietro al Viewport? –
@ MarkusHütter Fondamentalmente voglio che l'immagine sia mostrata come non c'è 'Viewport3D'. solo un 'Label' e' Image' nella 'Grid', e' Grid' potrebbe cambiare la dimensione con 'Window' – qakmak