WPF命中测试示例(二)——几何区域命中测试
接续上次的命中测试,这次来做几何区域测试示例。
示例
首先新建一个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命中测试示例(二)——几何区域命中测试相关推荐
- WPF命中测试示例(一)——坐标点命中测试
命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试. 示例 ...
- REW声学测试(二):离线测试
更多文章请关注微信公众号:「智能音箱设计」 在智能音箱扬声器测试的时候,由于智能音箱有独立的芯片模块,因此将待测设备连接到测试系统是不实际的.通常是使用智能音箱的蓝牙模块连接测试系统的蓝牙模块进行信号 ...
- Android测试(二):Android测试基础
原文地址:https://developer.android.com/training/testing/fundamentals.html 用户在不同的级别上与你的应用产生交互.从按下按钮到将信息下载 ...
- Tessy测试技巧二:指针函数测试
一.数组类型指针变量. 在TDE界面新建一个测试用例,右击原指针变量,指针类型参数创建tagrget value,会提示选择创建的数组大小.在下面dynamic出现target+变量名的新名称. 二. ...
- VC++ 鼠标非显示区域命中测试消息WM_NCHITTEST和相关编程问题学习1
此消息代表非显示区域命中测试:非显示区域,应该指窗口客户区以外的区域: 这个消息优先于所有其他的显示区域和非显示区域鼠标消息:其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用 ...
- svn教程----示例二:测试人员拥有读权限
示例二:测试人员拥有读权限 登陆测试是否有读/写权限: 清除认证缓存 有几种情况需要清除认证缓存: 1.本地使用多个账号登陆,每次输入的账号和密码都不一样 2.当账号密码修改后(建议清理)
- OpenCASCADE绘制测试线束:几何命令之约束
OpenCASCADE绘制测试线束:几何命令之约束 约束 cirtang lintan 约束 cirtang构造与曲线相切的二维圆: lintan构造与曲线相切的二维线. cirtang 句法: ci ...
- OpenCASCADE绘制测试线束:几何命令之Intersections
OpenCASCADE绘制测试线束:几何命令之Intersections Intersections intersect 2dintersect intconcon Intersections int ...
- OpenCASCADE绘制测试线束:几何命令之概述
OpenCASCADE绘制测试线束:几何命令之概述 Draw提供了一组命令来测试几何库.这些命令可以在 TGEOMETRY 可执行文件或任何包含GeometryTest命令的Draw可执行文件中找到. ...
最新文章
- NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题
- 打开计算机硬盘有声音,开机时硬盘会发出声音了,怎么办
- grep 打印出过滤字段及后3行内容
- linux之解决在ubuntu上面打开window文件乱码问题总结
- gwt 同步和异步_GWT Spring和Hibernate进入数据网格世界
- Magento教程 10:如何修改网站文字?
- map.addoverlay php,覆盖物 - 百度地图开发文档 - php中文网手册
- 安装nvm nodejs npm webpack vue vue-cli
- 缓存 负载均衡_使用“针对临时工作负载优化”选项来保存计划缓存存储
- linux shell 之 crontab(定时任务)详解
- 必备的海外贸易沟通工具 - intbell使用教程
- 恶略天气下的目标检测
- 苹果截屏快捷键_Mac进阶:掌握这 5 个冷门快捷键,让Mac更好用
- 解释部署大数据解决方案应遵循的步骤
- python批量拷贝数据脚本_使用python来玩转ensp~3-写个批量备份配置文件脚本
- java短信模板变量参数赋值_JIEQI CMS模板制作必读(JIEQI CMS模板 - 2.赋值变量形式)...
- 总离差平方和公式_excel公式怎么用:用EXCEL求离差平方和 和 相关系数
- 必收藏宝典:2023纽约通票价格景点大比拼!
- vue用el-select和el-tree实现树状结构单击选中
- 阿里云免费SSL证书过期替换