WPF命中测试示例(一)——坐标点命中测试
命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试。
示例
首先使用Microsoft Expression Blend 3创建一个新的WPF应用程序项目:
在窗体上随意绘制几个图形,这里分别使用了:Rectangle、Ellipse、Path元素。
在右下角绘制一个ListBox控件,命名为l1:
在视觉树面板中选中Window:
在属性面板中单击事件类别,然后再MouseUp事件右侧空白处双击以添加事件处理:
至此,前台XAML代码如下:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Class="WpfApplication1.MainWindow" x:Name="Window" Title="MainWindow" Width="640" Height="480" MouseUp="Window_MouseUp" mc:Ignorable="d"> <Grid x:Name="LayoutRoot"> <Rectangle Fill="#FFA9FF00" Stroke="Black" Margin="120.496,32.54,228.496,0" VerticalAlignment="Top" Height="164.92" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="26.565"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Ellipse Fill="#FF00FFD0" Stroke="Black" HorizontalAlignment="Right" Margin="0,161,88,99" Width="152"/> <Path Fill="#FF00E8FF" Stretch="Fill" Stroke="Black" HorizontalAlignment="Left" Margin="23.5,83,0,32.5" Width="283" Data="M316,69 L111.5,280.5 393.5,394.5 z"/> <ListBox x:Name="l1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="187" Height="197"/> </Grid> </Window>
编写后台事件处理代码为:
private void Window_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { l1.Items.Clear(); var p=e.GetPosition(sender as UIElement); VisualTreeHelper.HitTest(this,null,f=> { l1.Items.Add(f.VisualHit.ToString()); return HitTestResultBehavior.Continue; },new PointHitTestParameters(p)); }
这里的功能就是把坐标点位置交叠存在的所有视觉元素的ToString()形式显示到ListBox中。
其中 HitTestResultBehavior.Continue 是表示继续处理更深层的交叠的视觉元素,如果改为 Stop ,则只处理最表层的视觉元素。
在特定位置单击鼠标已进行测试:
下载
源代码:http://www.uushare.com/user/icesee/file/2991316
本文的XPS格式:http://www.uushare.com/user/icesee/file/2991317
本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2010/05/10/1731646.html,如需转载请自行联系原作者
WPF命中测试示例(一)——坐标点命中测试相关推荐
- WPF命中测试示例(二)——几何区域命中测试
接续上次的命中测试,这次来做几何区域测试示例. 示例 首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置: 当前设计视图界面如下: 接下来,转到窗体的"Windo ...
- rspec 测试页面元素_如何使用共享示例使您的RSpec测试干燥
rspec 测试页面元素 by Parth Modi 由Parth Modi 如何使用共享示例使您的RSpec测试干燥 (How to DRY out your RSpec Tests using S ...
- wxWidgets:wxHtml 测试示例
wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 #include "wx/wxprec.h" # ...
- 关键字驱动测试示例_带有示例的False关键字
关键字驱动测试示例 Python False关键字 (Python False keyword) False is a keyword (case-sensitive) in python, it i ...
- WPF获取相对位置、坐标的方法
原文:WPF获取相对位置.坐标的方法 1.获取鼠标在控件中的坐标: 1 private void item_MouseDown(object sender, MouseButtonEventArgs ...
- 180多个Web应用程序测试示例测试用例
180多个Web应用程序测试示例测试用例 假设:假设您的应用程序支持以下功能 各种领域的表格 儿童窗户 应用程序与数据库进行交互 各种搜索过滤条件和显示结果 图片上传 发送电子邮件功能 数据导出功能 ...
- C#使用Modbus协议读写汇川PLC的M区寄存器(测试示例),接上篇
对汇川PLC采用Modbus-TCP进行读写寄存器测试示例 新建WinForms应用程序InovancePlcDemo,.net framework 4.5. 重命名窗体名为FormInovanceP ...
- JUnit5 @Disabled测试示例
JUnit @Disabled注解可用于禁用测试套件中的测试方法. 该注解可以应用于测试类以及各个测试方法. 它仅接受一个可选参数,它指示此测试被禁用的原因. @Disabled的测试类 将@Disa ...
- 测试覆盖率统计工具_使用测试工具和方法进行测试覆盖率
测试覆盖率统计工具 概述: 要定义"测试覆盖率",我们必须谈论以下主题: 测试覆盖的目的. 不同类型的测试覆盖率标准. 测试覆盖率指标 单元测试范围 测试覆盖率工具 测试覆盖范围的 ...
最新文章
- angular路由传递参数_@medux 路由篇
- mysql中的字符匹配查询
- 复制到剪贴板的js代码(兼容ie、firefox、chorme、safari...什么都兼容!)
- 各种页面刷新代码大全,asp/javascript刷新页面代码
- VBox虚拟机仅主机模式时,出现connetct:Network is unreachable,解决方法
- discuz php如何开发,Discuzx2开发标准流程
- scp传输文件,自动填充密码
- TestNG中的参数化– DataProvider和TestNG XML(带有示例)
- 使用jclouds在S3上分段上传
- 数据分析JSON板块的基本使用(以分析比特币收盘价为例),附完整的Python代码及json文件详解---数据可视化
- hertz接触理论_角接触轴承的组配和预紧技术及影响
- window.location和window.open的区别
- linux服务器分区方案
- php.ini添加的变量读取,PHP5 在扩展里使用 INI 指令(直接添加和配合全局变量两种方式)...
- Mariadb----字符类型 (五)
- 网络上复制网页文字的方法
- 手机网页form表单样式_超全面!13种表单样式的设计方式都在这了
- wps表格宏被禁用如何解禁_怎么解除宏禁用_win7系统取消宏已被禁用提示的方法...
- Python+Webdriver实现淘宝、京东等抢单操作
- js实现显示系统时间的表盘
热门文章
- py文件打包或apk_Python文件打包成exe很简单,如果安卓手机也能运行的软件你会吗...
- php如何word转html格式文件,PHP将上传word文件,转化为Html格式,(多种转换方式)
- mysql数据库回滚日志_Mysql数据库应急响应中日志排查
- java迭代器的使用场景_集合遍历利器 -- 迭代器模式 介绍 使用场景案例 优缺点及程序演示...
- c语言是一门对标识符大小写敏感的程序设计语言,《C语言程序设计》课程自测题...
- 三维动画属于计算机专业吗,三维动画设计专业属于文科还是理科
- 2021年人工神经网络第四次作业-第四题:旋转的数字
- 芝大教授: 博士培养正沦为“庞氏骗局”
- 用手指触碰电子,用心灵感受震荡
- 第十五届全国大学生智能车人工智能创意组复赛首批团队名单