zoukankan      html  css  js  c++  java
  • OpenS-CAD学习(1)

    1.OpenS-CAD是一个不错的小巧的开源程序,以图层方式组织图形,可以绘制基本的线段、弧段、圆,可以进行节点对象捕捉,可以选择几何对象、对图幅进行平移、放大、缩小。可以将结果序列化保存为xml格式。其中的图形数据绘制组织方式和局部刷新知识点值得学习。

    http://www.codeproject.com/Articles/22549/OpenS-CAD-a-simple-2D-CAD-application

    2.基本架构

      多文档/视图结构。

      将活动的DocumentForm的菜单作为主窗体的菜单。

    3.绘制的一点分析

      将绘制成功的对象加入集合,在OnPaint中统一进行绘制(绘制在位图上),新增加对象m_newObject等临时对象绘制在控件上。编辑的过程中通过局部刷新技术减少闪烁,主要是在是MouseMove事件中。移动、选择、绘制、编辑、漫游等命令类型在三个鼠标事件中用于区别不同的操作对应不同的代码。

      绘制线段:MouseDown后,如果新建对象m_newObject为null,构造线段;再次单击m_newObject!=null,添加到m_data中。同时初始化新的m_newObject,线段是两点相同的线段。

    程序入口:

     1 public MainWin()
     2         {
     3             UnitPoint p = HitUtil.CenterPointFrom3Points(new UnitPoint(0,2), new UnitPoint(1.4142136f, 1.4142136f), new UnitPoint(2,0));
     4 
     5             InitializeComponent();
     6             Text = Program.AppName;
     7             string[] args = Environment.GetCommandLineArgs();
     8             if (args.Length == 2) // assume it points to a file
     9                 OpenDocument(args[1]);
    10             else
    11                 OpenDocument(string.Empty);
    12             
    13             m_menuItems = new MenuItemManager(this);
    14             m_menuItems.SetupStripPanels();
    15             SetupToolbars();
    16             
    17             Application.Idle += new EventHandler(OnIdle);
    18         }
    MainWin构造函数

    文档窗体:DocumentForm

    文档窗体中的绘图画布:CanvasCtrl m_canvas;        存储绘制图形数据的集合:DataModel m_data;

  • 相关阅读:
    JAVA嵌入运行Groovy脚本
    git撤销本地所有未提交的更改
    Java连接S3并上传Redis
    jython笔记
    Elasticsearch 5.2.x 使用 Head 插件连接不上集群
    elasticsearch 5.1 别的机器无法访问9200端口
    elasticsearch,http://ip:9200访问不到的解决办法
    在centos7中安装nodejs(npm )
    java标识符和关键字
    Java平台
  • 原文地址:https://www.cnblogs.com/yhlx125/p/3486072.html
Copyright © 2011-2022 走看看