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 ...
- 测试覆盖率统计工具_使用测试工具和方法进行测试覆盖率
测试覆盖率统计工具 概述: 要定义"测试覆盖率",我们必须谈论以下主题: 测试覆盖的目的. 不同类型的测试覆盖率标准. 测试覆盖率指标 单元测试范围 测试覆盖率工具 测试覆盖范围的 ...
最新文章
- 找到那些新时代的“操作系统”
- ethereumjs/ethereumjs-util
- 线程池方式调用spring mvc的业务类的简单实例
- centos nginx离线安装
- android二级菜单ui,Android UI 之实现多级树形列表TreeView示例
- 【习题 6-7 UVA - 804】Petri Net Simulation
- PHP添加php-java-brideg模块(ubuntu环境)
- Java中从String到Long的转换
- wpsppt流程图联系效果_| JEAM | 文章精选:大城市收取交通拥堵费的影响与效果
- 【学习笔记】n皇后问题的解决方法+改进代码(回溯递归)
- 2020-08-17 java实战项目汇总
- 云计算学习——Overlay网络技术概述
- 思科、华为路由器破解过程
- python 计算标准体重程序
- formatter格式说明
- 想问问,数模小白三个月准备数模国赛,现实吗?
- (1)asp。net操作ftp,上传和下载 (2) 长时间提交,在提交后禁止页面按钮 (3) 方便的javascript日历
- 计算机伦理学理论分析三大思想,试论伦理学的三种理论形态——基于理论形态学的考察...
- 云天励飞在科创板获准注册:计划募资30亿元,陈宁为实际控制人
- mysql1598_mysql中主从复制中出现ERROR 1598 (HY000)错误
热门文章
- java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表
- php lumen auth,学习 Lumen 用户认证 (一)
- java bean销毁,销毁Spring Bean的三种方法
- 将之前写完的猜数字游戏改为通过javabean_有了这些互动小游戏,知识竞赛更精彩了...
- selenium 操作 html 5,[Selenium] WebDriver 操作 HTML5 中的 video
- mysql安装的根目录_MySql安装及基础配置(一)
- c保留小数点后三位数没有则为0_哪位老师整理的,这么齐全?赶紧存下为孩子期末考试助力...
- php静态方法调用变量吗,php静态方法怎么调用非静态变量?
- 微型角度编码器 : KYTB-1503-1024
- ACS712模块 ACS712ELCTR-05A电流传感器模块