[导入]Netron研究(二)----容器登场
生活随笔
收集整理的這篇文章主要介紹了
[导入]Netron研究(二)----容器登场
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 在上一篇隨筆中,寫了一點對Netron的初步認識,簡單分析了下Netron中的三個基本圖形實體:ShapeBase,Connection,Connector.但是這個三個實體只是三個光棍司令.他們怎么顯示在窗體上呢?OK.下面,Netron的下一個主角即將登場.
??? Netron中,有一個繼承自.net framework中的System.Windows.Forms.ScrollableControl控件GraphControl,他在Netron中充當一個"容器"的角色(之所以加上引號,是為了和我們框架使用的IOC容器區分下).Netron中的所有圖形實體都在他里面進行顯示,控制.我將其部分重要的域和方法拿出來說明一下.
??? GraphControl中的關鍵域:
??? GraphControl的構造器
??? 這個很簡單,大概的看一下,以達到理解該"容器"的構造行為. public GraphControl() { //double-buffering SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.ResizeRedraw, true); //init the collections shapes = new ShapeCollection(); connections = new ConnectionCollection(); //menu menu = new ContextMenu(); BuildMenu(); this.ContextMenu = menu; //init the randomizer rnd = new Random(); //init the proxy proxy = new Proxy(this); }??? GraphControl中的關鍵方法public ShapeBase AddShape(ShapeBase shape) public ShapeBase AddShape(ShapeTypes type, Point location)??? 這兩個重載方法提供向GraphControl添加基本圖形對象(橢圓,矩形...)的功能.public Connection AddConnection(Connection con) public Connection AddConnection(Point startPoint) public Connection AddConnection(Connector from, Connector to) public Connection AddConnection(Point from, Point to)??? 這四個重載方法提供向GraphControl添加圖形對象間連線對象的功能.protected override void OnMouseDown(MouseEventArgs e) protected override void OnMouseUp(MouseEventArgs e) protected override void OnMouseMove(MouseEventArgs e)
??? 這三個重載方法對圖形的選擇,拖動起到了至關重要的作用.在以后的隨筆中將深入其內部進行分析.
???
??? 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研究(二)----容器登场的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML统一建模过程
- 下一篇: Linux declare命令、Linu