Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WP3和3D如何使用VisualBrush填充视口3D?_C#_Wpf_Vb.net_Math_3d - Fatal编程技术网

C# WP3和3D如何使用VisualBrush填充视口3D?

C# WP3和3D如何使用VisualBrush填充视口3D?,c#,wpf,vb.net,math,3d,C#,Wpf,Vb.net,Math,3d,我在WPF中定义了一个非常简单的3D空间,它定义了一个3D矩形和一个3D相机。3D矩形有一个可视化画笔材质,用于描绘窗口的内容。 当窗口大小大于960x550时,它工作正常(投影很好地填充了可用区域)。 但是,在这个数字以下(只要窗口的宽度远小于它的高度),它会在屏幕右侧留下一个空白。如果您有任何建议或指示,我将不胜感激 这是我的XAML: <Grid x:Name="RootGrid"> <!--UI Stuff here--> </Gri

我在WPF中定义了一个非常简单的3D空间,它定义了一个3D矩形和一个3D相机。3D矩形有一个可视化画笔材质,用于描绘窗口的内容。 当窗口大小大于960x550时,它工作正常(投影很好地填充了可用区域)。 但是,在这个数字以下(只要窗口的宽度远小于它的高度),它会在屏幕右侧留下一个空白。如果您有任何建议或指示,我将不胜感激

这是我的XAML:

<Grid x:Name="RootGrid">
        <!--UI Stuff here-->
    </Grid>
    <Viewport3D x:Name="MyAnimatedObject" ClipToBounds="False">
        <Viewport3D.Camera>
            <PerspectiveCamera x:Name="myPerspectiveCamera" FieldOfView="60" Position="0,0,1"/>
        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight Color="#FFFFFF" Direction="-0.5,-0.5,-0.5"/>
            </ModelVisual3D.Content>
        </ModelVisual3D>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <DirectionalLight Color="#FFFFFF" Direction="0.5,-0.5,-0.5"/>
            </ModelVisual3D.Content>
        </ModelVisual3D>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <GeometryModel3D x:Name="geometryModel3D">
                    <GeometryModel3D.Transform>
                        <Transform3DGroup>
                            <TranslateTransform3D/>
                            <ScaleTransform3D/>
                            <RotateTransform3D/>
                            <TranslateTransform3D/>
                            <TranslateTransform3D/>
                        </Transform3DGroup>
                    </GeometryModel3D.Transform>
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D
       TriangleIndices="0 3 2 0 2 1"
       TextureCoordinates="0,0 1,0 1,1 0,1"
                            Normals="0,0,1 0,0,1 0,0,1 0,0,1"
       Positions="-1,-1,0 1,-1,0 1,1,0 1,1,0 -1,1,0 -1,-1,0"/>
                    </GeometryModel3D.Geometry>
                    <GeometryModel3D.Material>
                        <MaterialGroup>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <VisualBrush Visual="{Binding ElementName=RootGrid}" Stretch="Fill"/>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </MaterialGroup>
                    </GeometryModel3D.Material>
                </GeometryModel3D>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>
Private Sub MainWindow_SizeChanged(ByVal sender As Object, ByVal e As System.Windows.SizeChangedEventArgs) Handles Me.SizeChanged
    Dim AspectRatio As Double = RootGrid.ActualWidth / RootGrid.ActualHeight

    Dim CameraDistance As Double = AspectRatio / Math.Tan(30D * Math.PI / 180)
    myPerspectiveCamera.Position = New Media3D.Point3D(0, 0, CameraDistance)


    Dim points As New Media3D.Point3DCollection
    With points
        .Add(New Media3D.Point3D(0D - AspectRatio, 1, 0))
        .Add(New Media3D.Point3D(AspectRatio, 1, 0))
        .Add(New Media3D.Point3D(AspectRatio, -1, 0))
        .Add(New Media3D.Point3D(0D - AspectRatio, -1, 0))
    End With
    CType(geometryModel3D.Geometry, Media3D.MeshGeometry3D).Positions = points
End Sub