首页 > 其他分享 >【WPF】命中测试(Hitest) 开篇

【WPF】命中测试(Hitest) 开篇

时间:2022-10-29 13:22:35浏览次数:92  
标签:开篇 对象 可视化 测试 命中 视觉 WPF Hitest

 

 

 

命中测试支持

VisualTreeHelper 类中 HitTest 方法的用途是确定几何或点坐标值是否在给定对象的呈现内容内,如控件或图形元素。 例如,可以使用命中测试确定对象边框内的鼠标单击是否落在圆形的几何内。 还可以选择重写命中测试的默认实现,以执行自己的自定义命中测试计算。

下图显示非矩形对象的区域与其边框之间的关系。

有效命中测试区域示意图
有效命中测试区域示意图

命中测试和 Z 顺序

Windows Presentation Foundation (WPF) 可视化层支持针对点或几何下的所有对象(而不仅仅是最顶层对象)进行命中测试。 结果按 z 顺序返回。 但是,作为参数传递到 HitTest 方法的视觉对象确定将对可视化树的哪个部分进行命中测试。 可以针对整个可视化树或它的任意部分进行命中测试。

在下图中,圆形对象在正方形和三角形对象之上。 如果只希望对其 z 顺序值为最顶层的视觉对象进行命中测试,则可以设置可视化命中测试枚举,使其在第一个项之后从 HitTestResultCallback 返回 Stop 以停止命中测试遍历。

可视化树的 z 顺序图
可视化树的 z 顺序示意图

如果要枚举特定点或几何下的所有视觉对象,请从 HitTestResultCallback 返回 Continue。 这意味着可以为其他对象之下的视觉对象进行命中测试,即使它们被完全遮挡也是如此。 有关详细信息,请参阅“使用命中测试结果回叫”部分中的示例代码。

还可以对透明的视觉对象进行命中测试。

 

标签:开篇,对象,可视化,测试,命中,视觉,WPF,Hitest
From: https://www.cnblogs.com/cdaniu/p/16838545.html

相关文章

  • 【WPF】Hitest 命中测试
    概述: WPF中的Canvas是常用的一个绘图控件,可以方便地在Canvas中添加我们需要处理的各种元素如:图片、文字等。但Canvas中元素增加到一定数量,并且有重合的时候,我们如何通过......
  • 【WPF】绘制图形的三种方法及区别
     WPF中用于绘图的类主要有三个,分别是Shape类、Drawing类和DrawingVisual类,Shape类存在于System.Windows.Shapes命,而Drawing类和DrawingVisual类则都存在于System.Window......
  • wpf .net core win7 独立运行补丁安装记录
     Windows7系统上,根据dotnet官方文档,需要安装上KB2533623补丁方案如下:首先使用 fx2.0 写一个启动器 如果检测可以运行则拉起.net core 主程序 否则弹出命令......
  • 如何用界面组件DevExpress WPF创建Excel式的过滤功能?赶紧Get
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • 【WPF】ToolBar工具栏菜单和命令
     ToolBar   对许多小的按钮(或者其他控件)进行分组。   ToolBar可以被放在元素树的任何地方,但是通常把它们放在一个叫作ToolBarTray的FrameworkElement中。  ......
  • WPF常用图表软件
    暂时没太多时间就不截图了,简述一下livechart1这个chart一直没有开发到成熟,所以bug有点多,时间轴就有问题,然后免费版性能还是很差的,得用收费版的那个补丁,然后就会性能很......
  • ArcEngine+WPF开发踩过的坑
    最近开始弄WPF下的arcengine开发,说实话,很多坑,每次遇到的奇葩问题会在这个随笔下记录:1、地图不刷新 问题:调用ActiveView.PartialRefresh()后地图不刷新???解决方案......
  • WPF-后台动态创建窗口添加控件示例
    Windowwindow1=newWindow();window1.Title="新窗口";window1.Background=Brushes.LightBlue;//SolidColorBrushbrush1......
  • wpf引用样式
    在css中,可以把公用样式抽出放在一个单独的css文件里面。在wpf中也可以做到类似的操作。分离样式把样式写在Style下的Button.xaml下:<ResourceDictionaryxmlns="http:/......
  • 【EF Core】开篇
    概念1、EFCore框架3种模式:   DatabaseFirst:DBFirst方式生成SQLite实体对象ModelFirst:已经被淘汰CodeFirst:推荐默认协定:每一种模式都有一个默认协......