当前位置: 首页 > news >正文

WPF命中测试示例(二)——几何区域命中测试

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

 

示例

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

image

当前设计视图界面如下:

image

接下来,转到窗体的“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个不同色彩的小圆点,我们来编译运行看看效果:

SNAGHTML11caca8c

现在,我们需要在按钮点击时,将中间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,传入一个几何图形作为命中测试区域。

编译运行效果:

image 

 

下载

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

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


本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2010/05/17/1737106.html,如需转载请自行联系原作者

相关文章:

  • heartbeat-ldirectord的配置
  • LLVM 与 Clang 介绍
  • 实例讲解如何查找某个对象的定义情况
  • Oracle数据库“Specified cast is农田valid”
  • Linux 系统使用命令
  • 禁止微信下拉到顶部时露底--代码记录
  • 浅谈ListBox在Windows Phone 7 中的使用(2)
  • 服务器虚拟环境存储性能遭挑战。
  • 判断JS字符串中是否包含某些字符
  • 一位10年Java工作经验的架构师聊Java和工作经验
  • Linux下QT编程之hello qt程序
  • Dao 常用方法记录
  • vss团队开发工具使用(个人学习心得)
  • mybatis打印sql日志配置
  • mount报错
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • express + mock 让前后台并行开发
  • JavaScript DOM 10 - 滚动
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS题目及答案整理
  • Logstash 参考指南(目录)
  • webpack+react项目初体验——记录我的webpack环境配置
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 我感觉这是史上最牛的防sql注入方法类
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #NOIP 2014# day.1 T2 联合权值
  • (003)SlickEdit Unity的补全
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (9)STL算法之逆转旋转
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (function(){})()的分步解析
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (七)理解angular中的module和injector,即依赖注入
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net CHARTING图表控件下载地址
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net下的富文本编辑器FCKeditor的配置方法
  • @Async注解的坑,小心
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [30期] 我的学习方法
  • [AutoSar NVM] 存储架构
  • [BJDCTF 2020]easy_md5