WPF基于3D对象捕获鼠标点击事件

ModelUIElment3D

UIElment3D是.NET3.5新增的类,替代了ModelVisual3D。ModelVisual3D有2个派生类ModelUIElment3D和ContainerUIElment3D。ModelUIElment3D跟ModelVisual3D最大的不同就是,不需要使用HItTest来检测鼠标点击的某个具体的3D对象模型。取而代之是标准2D事件名MouseLeftButtonDown。

新建WPF项目

打开Vs2015,新建一个WPF项目工程,新建一个窗体MainWindow。

设置背景颜色

    <Grid.Background>
        <DrawingBrush Viewport="0,0,0.05,0.05" TileMode="FlipXY">
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Brush="Black" Geometry="M0,0 L1,0 L1,1 L0,1" />
                    <GeometryDrawing Brush="DarkBlue" Geometry="M0,0.5 L0.5,0.5 L0.5,1 L0,1" />
                    <GeometryDrawing Brush="DarkBlue" Geometry="M0.5,0 L1,0 L1,0.5 L0.5,0.5" />
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Grid.Background>

增加 Viewport3D

      <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="0,0,7" LookDirection="0,0,-1"/>
        </Viewport3D.Camera>
    </Viewport3D>

增加ModelUIElement3D

           <Viewport3D.Children>
            <ModelUIElement3D x:Name="model" MouseLeftButtonDown="model_MouseLeftButtonDown" >
                <ModelUIElement3D.Model>

                    <GeometryModel3D x:Name="Teapot">
                        <GeometryModel3D.Material>
                            <EmissiveMaterial Brush="Red" />
                        </GeometryModel3D.Material>

                        <GeometryModel3D.Geometry>此处是模型数据,省略,一般由ZAM3D绘制或者3dmaxobj导入自动生成。。
                        </GeometryModel3D.Geometry>
                    </GeometryModel3D>

                </ModelUIElement3D.Model>
            </ModelUIElement3D>
        </Viewport3D.Children>

编写鼠标响应事件代码

    private void model_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("点击的是1");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值