About WPF PointLinght

若汝棋茗 41 Reputation points
2021-01-15T03:16:11.547+00:00

I created a 3D view with a TextBlock in it and a SpotLight in it. I wanted it to look like a flashlight, but no matter how I tried to debug it, it didn't work.So I hope some teachers can teach me.Thank you very much。

code:
<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera x:Name="camera" LookDirection="0,0,-1" Position="0.5,0.5,1" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<SpotLight x:Name="light" ConstantAttenuation="0.001" Direction="0,0,-1" LinearAttenuation="0.001" Position="0.5,0.5,0.2"
QuadraticAttenuation="0.001" Range="0.5" Color="Red" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport2DVisual3D>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Brush="White" Viewport2DVisual3D.IsVisualHostMaterial="True" />
</Viewport2DVisual3D.Material>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="0,0,0 1,0,0 1,1,0 0,1,0" TextureCoordinates="0,1 1,1 1,0 0,0" TriangleIndices="0,1,2 2,3,0" />
</Viewport2DVisual3D.Geometry>
<Border Background="White">
<Grid Margin="100">
<TextBlock Text="你好" Foreground="Black" />
</Grid>
</Border>
</Viewport2DVisual3D>
</Viewport3D>

Windows Presentation Foundation
Windows Presentation Foundation
A part of the .NET Framework that provides a unified programming model for building line-of-business desktop applications on Windows.
2,681 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. DaisyTian-1203 11,616 Reputation points
    2021-01-15T06:55:19.697+00:00

    I do some updates for your code as below shown:

      <Viewbox>  
                    <Canvas Width="321" Height="201">  
                        <Viewport3D ClipToBounds="True" Width="150" Height="150" Canvas.Left="0" Canvas.Top="10">  
                    <Viewport3D.Camera>  
                        <PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" />  
                    </Viewport3D.Camera>  
      
                    <Viewport3D.Children>  
                        <ModelVisual3D>  
                            <ModelVisual3D.Content>  
                                <SpotLight x:Name="mySpotLight" InnerConeAngle="20" OuterConeAngle="20" Color="White" Direction="0,0,-1"  Position="1,1,6" Range="20"/>  
                            </ModelVisual3D.Content>  
                        </ModelVisual3D>  
                                <Viewport2DVisual3D>  
                                    <Viewport2DVisual3D.Material>  
                                        <DiffuseMaterial Brush="White" Viewport2DVisual3D.IsVisualHostMaterial="True" />  
                                    </Viewport2DVisual3D.Material>  
                                    <Viewport2DVisual3D.Geometry>  
                                        <MeshGeometry3D Positions="0,0,0 1,0,0 1,1,0 0,1,0" TextureCoordinates="0,1 1,1 1,0 0,0" TriangleIndices="0,1,2 2,3,0" />  
                                    </Viewport2DVisual3D.Geometry>  
                                    <Border Background="White">  
                                        <Grid Margin="100">  
                                            <TextBlock Text="你好" Foreground="Black" />  
                                        </Grid>  
                                    </Border>  
                                </Viewport2DVisual3D>  
                            </Viewport3D.Children>  
                     
                </Viewport3D>  
                    </Canvas>  
                </Viewbox>  
    

    And the result picture is:
    57051-capture.png

    Is this what you want? If it is not, please show me more details about your question or post an effect picture.


    If the response is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.