<Viewport3D x:Name="viewPort3D" RenderOptions.EdgeMode="Aliased" ClipToBounds="False">
                <Viewport3D.Camera>
                    <PerspectiveCamera Position="0,1,0"  LookDirection="0,0,-1" UpDirection="0,1,0"  FieldOfView="40"   />
                    
                </Viewport3D.Camera>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <AmbientLight Color="White"/>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
                <ModelVisual3D >
                    <ModelVisual3D.Content> 
                        <Model3DGroup x:Name="model3DGroup">
                            <Model3DGroup.Children> 
                                <GeometryModel3D  x:Name="right" Geometry="{StaticResource Geometry}"  >
                                    <GeometryModel3D.Transform>
                                        <Transform3DGroup>
                                            <RotateTransform3D>
                                                <RotateTransform3D.Rotation>
                                                    <AxisAngleRotation3D Axis="0,0,0" Angle="0"/>
                                                </RotateTransform3D.Rotation>
                                            </RotateTransform3D>
                                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="-50" />
                                        </Transform3DGroup>
                                    </GeometryModel3D.Transform>
                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial>
                                            <DiffuseMaterial.Brush>
                                                <ImageBrush ImageSource="Resources\Images\6.jpg"> 
                                                </ImageBrush> 

                                            </DiffuseMaterial.Brush>
                                        </DiffuseMaterial>
                                    </GeometryModel3D.Material>
                                  
                                </GeometryModel3D>
                          
                            </Model3DGroup.Children>
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>我想在那个图上鼠标加事件,但是好像没有可加事件的属性支持,但是我想不至于不能添加事件吧,要不然能看不能摸有什么意思呢。不知道微软是怎么处理的?(我想微软的人不至于搞出来的东西不支持事件吧)

解决方案 »

  1.   

    WPF中虚拟的3D物体(比如说帖上去的一个图片)就不能获取事件啦?
      

  2.   

    微软就将事件给了Viewport3D这个对象,其包含的子元素如何才能获得被鼠标点击呢?难道鼠标不能进入3D的这个虚拟结界内?没道理啊
      

  3.   


    Wpf鼠标事件是路由事件,可以是冒泡和隧道方式的,Viewport3D的鼠标事件同样能捕捉它内部子元素的鼠标事件,前提是内部子元素也有鼠标事件;事实上,你点击的区域虽然在Viewport3D的范围内,但是触发事件的元素可能是Viewport3D的子元素,但是Viewport3D同样能捕捉到事件
      

  4.   

    举个简单的例子:<Grid MouseLeftButtonDown="M_1">
      <TextBlock MouseLeftButtonDown="M_2"/>
    </Grid>你点击TextBlock,会同时触发M_1和M_2的事件,但是并不意味着,你同时点击了TextBlock和Grid,Grid的事件是TextBlock通过冒泡方式传递给Grid如果TextBlock不支持MouseLeftButtonDown,则Grid 也不能触发MouseLeftButtonDown;同样的道理,假如Viewport3D内部的子元素如果支持鼠标路由事件,那么Viewport3D也可以捕捉到,假如Viewport3D内部的子元素不支持鼠标事件,不但子元素捕捉不到,Viewport3D也捕捉不到
      

  5.   

    “假如Viewport3D内部的子元素不支持鼠标事件”里面的元素是不支持事件哦。只有参考3D象棋的方法咯。
    ChessPiece GetHitTestResult(Point location)
            {
                HitTestResult result = VisualTreeHelper.HitTest(_3DChess, location);
                if (result != null && result.VisualHit is ChessPiece)
                {
                    ChessPiece visual = (ChessPiece)result.VisualHit;
                    return visual;
                }
                return null;
            }