[导入]Netron研究(二)----容器登场
在上一篇随笔中,写了一点对Netron的初步认识,简单分析了下Netron中的三个基本图形实体:ShapeBase,Connection,Connector.但是这个三个实体只是三个光棍司令.他们怎么显示在窗体上呢?OK.下面,Netron的下一个主角即将登场.
Netron中,有一个继承自.net framework中的System.Windows.Forms.ScrollableControl控件GraphControl,他在Netron中充当一个"容器"的角色(之所以加上引号,是为了和我们框架使用的IOC容器区分下).Netron中的所有图形实体都在他里面进行显示,控制.我将其部分重要的域和方法拿出来说明一下.
GraphControl中的关键域:
shapes域保存的是GraphControl中所有的ShapeBase对象.ShapeCollection是一个继承自System.Collections.CollectionBase的集合类,也就是对ShapeBase对象进行添加,删除,检索等操作,很简单,不细谈.connections类似,保存的是Conncetion对象集合.(这里有一个值得改进的地方,由于该版本的Netron是在.net1.1下开发的,没有利用到.net2.0泛型的优点,这样,当以后图形元素不断增加,这类Collection对象将会随之增多,但他们内部代码都是大同小异的,完全可以用一个泛型集合代替)
hoveredEntity域保存的是鼠标悬浮到的图形实体对象,得到这个对象的目的是当鼠标移动到某个实体上的时候,改变该图形实体的外观(比如:将其周边线条变为红色).selectedEntity域保存的是一个被鼠标选中的唯一图形实体,以达到选中一个图形对象,然后进行相关操作的目的.
该域表示是否应该进行鼠标轨迹的追踪,在进行图形元素拖动的时候将会利用到这个域.
GraphControl的构造器
这个很简单,大概的看一下,以达到理解该"容器"的构造行为.
GraphControl中的关键方法
这两个重载方法提供向GraphControl添加基本图形对象(椭圆,矩形...)的功能.
这四个重载方法提供向GraphControl添加图形对象间连线对象的功能.
这三个重载方法对图形的选择,拖动起到了至关重要的作用.在以后的随笔中将深入其内部进行分析.
OK.该"容器"的登场亮相到此结束,现在,你对Netron的大体实现原理是否已经有了一个宏观上的认识呢?继续学习研究吧.
----2005.12.22 23:31 星期四
文章来源:http://www.agilelabs.cn/blogs/woody/archive/2005/12/22/296.aspx
转载于:https://www.cnblogs.com/veryverygood/archive/2006/01/16/318054.html
[导入]Netron研究(二)----容器登场相关推荐
- 洛河98计算机学校王艳,小学语文课堂导入设计研究实施方案
小学语文课堂导入设计研究实施方案 宝塔区冯庄学校课题组 王艳 当前,许多语文教师多关注学习目标及内容所运用的方法策略,对于语文课堂的开讲导入思考较少.针对语文教师开讲随意或单刀直入不讲究科学性.艺术性 ...
- java在容器中导入图片_Java程序员必学技术:@Import直接导入类,在容器@Configuration、@Component中是怎么直接导入类注册到容器的?...
Java程序员必学技术:@Import直接导入类,在容器@Configuration.@Component中是怎么直接导入类注册到容器的? Spring IoC 容器是一个管理 Bean 的容器,在 ...
- 二维burgers方程_用格子Boltzmann方法研究二维Burgers方程
用格子 Boltzmann 方法研究二维 Burgers 方程 张伟 ; 李文杰 [期刊名称] <天津城市建设学院学报> [年 ( 卷 ), 期] 2012(018)001 [ 摘 要 ] ...
- 数据转换成二维码并导出进Excel中和导入时解码二维码反转成数据
数据转换成二维码并导出进Excel中和导入时解码二维码反转成数据 第一步在maven中配置需要的二维码jar包 1.1 谷歌提供的帮助类 1.2 关于二维码的工具类 1.3 测试类 第二步 在Exce ...
- JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西
内容目录: JAVA 虚拟机深入研究(一)--关于Java的一些历史 JAVA 虚拟机深入研究(二)--JVM虚拟机发展以及一些Java的新东西 这是第二篇,我们来说说有关虚拟机的发展. 一说到虚拟机 ...
- Fiddler实战深入研究(二)
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
- Fiddler实战深入研究(二)——模拟返回数值
转自大神:https://www.cnblogs.com/tugenhua0707/p/4637771.html ------------------------------------------- ...
- Fiddler实战深入研究(二)[转载]
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
- 数字货币综合虚拟货币交易平台源码(基于thinkphp框架)中英文切换适合学习研究 二开
源码简介: 数字货币合约交易源码,综合虚拟货币交易平台源码(基于thinkphp框架)中英文切换 支pc+h5 持委托交易,买卖交易市场等等功能 这个框架适合二开 好多比较好一点的交易所都是基于这个二 ...
最新文章
- JavaScript:事件冒泡和事件委托
- [Objective-c基础教程] chapter one Before You Start chapter two Extensions to C
- 神经网络 | 玻尔兹曼机(附python源代码)
- python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...
- 点击显示底框颜色,默认显示第一个。
- php phpexcel用法,PHPExcel用法总结
- USACO-Section1.4 Prime Cryptarithm (搜索)
- android java调用_关于Android中Java调用外部命令的三种方式
- 国家广电总局:常规电视剧剧集正片时长不少于41分钟
- 转js 将json字符串转换为json对象的方法解析
- [Ext JS 4] Grid 组件
- java zookeeper 使用_Zookeeper简介
- Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法
- Qt网络编程-TcpClient入门Demo(1)
- php 写ps功能,ps的作用是什么
- 【MTSP】遗传和粒子群算法求解多旅行商问题【Matlab 1156期】
- Hexo even主题博客配置
- 公证通Factom白皮书
- opencv-python 实现截取图片中的多边形、圆形区域
- 【图文】实操重置密码
热门文章
- 禁用内存清理_win10电脑开机内存占用高达80%以上如何解决
- python基本对象_python基础教程:运算对象、运算符、表达式和语句
- 被替换的项目不是替换值长度的倍数_如果要在Excel中计算单元格内指定的字符长度,我推荐这两个公式.........
- PCB设计中焊盘的种类,你都见过几种?
- LL-verilog-HDLBitSim/circuit10解答和过程详解
- 电路常识性概念(3)-TTL与CMOS集成电路
- java调用百度推送详解_Java 以 Post 方式实现百度 Sitemap 实时推送
- 基于c语言画图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
- 服务器端接华为sdk无响应,sdk未响应
- matlab中std和std2的区别,matlab 关于std,std2,mean,mean2初步认识