接续上次的命中测试,这次来做几何区域测试示例。

示例

首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置:

当前设计视图界面如下:

接下来,转到窗体的“Window_Loaded”事件处理函数,编写函数代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
Random r = new Random();
for (int i = 0; i < 800; i++)
{
var o = new Ellipse();
o.HorizontalAlignment = HorizontalAlignment.Left;
o.VerticalAlignment = VerticalAlignment.Top;
o.Margin=new Thickness(){ Left = r.Next((int)this.Width),Top = r.Next((int)this.Height)};
o.Height = o.Width = r.Next(10);
o.Fill = new SolidColorBrush(new Color() { A = (byte)r.Next(255), R = (byte)r.Next(255), G = (byte)r.Next(255), B = (byte)r.Next(255) });
root.Children.Add(o);
}
}

代码的功能是在界面中随机分布800个不同色彩的小圆点,我们来编译运行看看效果:

现在,我们需要在按钮点击时,将中间200×150椭圆区域内的小圆点变成黑色。

编写按钮点击事件处理函数如下:

private void button1_Click(object sender, RoutedEventArgs e)
{
VisualTreeHelper.HitTest(root, null, f =>
{
var o = f.VisualHit as Ellipse;
if (o != null) o.Fill = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
return HitTestResultBehavior.Continue;
}, new GeometryHitTestParameters(new EllipseGeometry(new Point(this.Width / 2, this.Height / 2), 200, 150)));
}

这里的HitTestParameters就采用了GeometryHitTestParameters,传入一个几何图形作为命中测试区域。

编译运行效果:

下载

源代码:http://www.uushare.com/user/icesee/file/3024856

本文的XPS版本:http://www.uushare.com/user/icesee/file/3024874

转载于:https://www.cnblogs.com/SkyD/archive/2010/05/17/1737106.html

WPF命中测试示例(二)——几何区域命中测试相关推荐

  1. WPF命中测试示例(一)——坐标点命中测试

    命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试. 示例 ...

  2. REW声学测试(二):离线测试

    更多文章请关注微信公众号:「智能音箱设计」 在智能音箱扬声器测试的时候,由于智能音箱有独立的芯片模块,因此将待测设备连接到测试系统是不实际的.通常是使用智能音箱的蓝牙模块连接测试系统的蓝牙模块进行信号 ...

  3. Android测试(二):Android测试基础

    原文地址:https://developer.android.com/training/testing/fundamentals.html 用户在不同的级别上与你的应用产生交互.从按下按钮到将信息下载 ...

  4. Tessy测试技巧二:指针函数测试

    一.数组类型指针变量. 在TDE界面新建一个测试用例,右击原指针变量,指针类型参数创建tagrget value,会提示选择创建的数组大小.在下面dynamic出现target+变量名的新名称. 二. ...

  5. VC++ 鼠标非显示区域命中测试消息WM_NCHITTEST和相关编程问题学习1

    此消息代表非显示区域命中测试:非显示区域,应该指窗口客户区以外的区域: 这个消息优先于所有其他的显示区域和非显示区域鼠标消息:其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用 ...

  6. svn教程----示例二:测试人员拥有读权限

    示例二:测试人员拥有读权限 登陆测试是否有读/写权限: 清除认证缓存 有几种情况需要清除认证缓存: 1.本地使用多个账号登陆,每次输入的账号和密码都不一样 2.当账号密码修改后(建议清理)

  7. OpenCASCADE绘制测试线束:几何命令之约束

    OpenCASCADE绘制测试线束:几何命令之约束 约束 cirtang lintan 约束 cirtang构造与曲线相切的二维圆: lintan构造与曲线相切的二维线. cirtang 句法: ci ...

  8. OpenCASCADE绘制测试线束:几何命令之Intersections

    OpenCASCADE绘制测试线束:几何命令之Intersections Intersections intersect 2dintersect intconcon Intersections int ...

  9. OpenCASCADE绘制测试线束:几何命令之概述

    OpenCASCADE绘制测试线束:几何命令之概述 Draw提供了一组命令来测试几何库.这些命令可以在 TGEOMETRY 可执行文件或任何包含GeometryTest命令的Draw可执行文件中找到. ...

最新文章

  1. NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题
  2. 打开计算机硬盘有声音,开机时硬盘会发出声音了,怎么办
  3. grep 打印出过滤字段及后3行内容
  4. linux之解决在ubuntu上面打开window文件乱码问题总结
  5. gwt 同步和异步_GWT Spring和Hibernate进入数据网格世界
  6. Magento教程 10:如何修改网站文字?
  7. map.addoverlay php,覆盖物 - 百度地图开发文档 - php中文网手册
  8. 安装nvm nodejs npm webpack vue vue-cli
  9. 缓存 负载均衡_使用“针对临时工作负载优化”选项来保存计划缓存存储
  10. linux shell 之 crontab(定时任务)详解
  11. 必备的海外贸易沟通工具 - intbell使用教程
  12. 恶略天气下的目标检测
  13. 苹果截屏快捷键_Mac进阶:掌握这 5 个冷门快捷键,让Mac更好用
  14. 解释部署大数据解决方案应遵循的步骤
  15. python批量拷贝数据脚本_使用python来玩转ensp~3-写个批量备份配置文件脚本
  16. java短信模板变量参数赋值_JIEQI CMS模板制作必读(JIEQI CMS模板 - 2.赋值变量形式)...
  17. 总离差平方和公式_excel公式怎么用:用EXCEL求离差平方和 和 相关系数
  18. 必收藏宝典:2023纽约通票价格景点大比拼!
  19. vue用el-select和el-tree实现树状结构单击选中
  20. 阿里云免费SSL证书过期替换

热门文章

  1. Verilog: How to avoid 'Redeclaration of ansi port'
  2. 【FPGA】流水线学习笔记
  3. Uber开源TensorFlow框架工具箱Ludwig,无需编码即可进行深度学习开发
  4. keepalived介绍和配置
  5. python smtp模块发送邮件
  6. Web性能压力测试工具——Siege详解
  7. WebRTC内置debug工具,详细参数解读
  8. Javascript之链式运动框架1
  9. JavaScript 输出
  10. openvn客户端连接配置(ubnutu)