NShape(矢量图形编辑器) 入门(二)

  在上篇博文里介绍如何创建一个最基本的NShape查看器。本章将会继续完善该程序。

创建一个NShape编辑器

1.打开上文创建的工程文件,进入WinForm窗口界面。双击窗体标题栏进入 Form1_Load 方法,在该方法最下方添加以下代码:

private void Form1_Load(object sender, EventArgs e)
{///……display1.ActiveTool = new SelectionTool();
}

  完成后运行程序可以发现已经可以选择并编辑画板上的图形对象。


2.在文件打开选项卡添加保存选项。双击 保存 选项,进入 保存ToolStripMenuItem_Click 方法,添加代码:

private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{if(!project1.IsOpen){return;}string filePath = xmlStore1.ProjectFilePath;if (!File.Exists(filePath)){SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "*.nspj|*.nspj";if(saveFileDialog.ShowDialog() == DialogResult.OK){xmlStore1.ProjectFilePath = filePath;}}project1.Repository.SaveChanges();
}

  完成后即可保存文件。

3.在文件打开保存选项卡添加新建选项。双击 新建 选项,进入 新建ToolStripMenuItem_Click 方法,添加代码:

 private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{if (project1.IsOpen){if (project1.Repository.IsModified){switch(MessageBox.Show("当前文件已修改但尚未保存,是否保存","提示",MessageBoxButtons.YesNoCancel)){case System.Windows.Forms.DialogResult.Yes:{保存ToolStripMenuItem_Click(null, null);break;}case System.Windows.Forms.DialogResult.No: break;   default: return;}}project1.Close(); }//新建空白对象project1.Name = "New Templet";project1.Create();display1.CreateDiagram("Diagram 1");
}

  完成后即可新建文件。

4.双击菜单栏下 打开 选项,进入 打开ToolStripMenuItem_Click 方法,完善代码:

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{///……if(project1.IsOpen){if (project1.Repository.IsModified){switch (MessageBox.Show("当前文件已修改但尚未保存,是否保存", "提示", MessageBoxButtons.YesNoCancel)){case System.Windows.Forms.DialogResult.Yes:{保存ToolStripMenuItem_Click(null, null);break;}case System.Windows.Forms.DialogResult.No: break;default: return;}}project1.Close();}  ///……
}

5.在文件新建打开保存选项卡添加另存为选项。双击 另存为 选项,进入 另存为ToolStripMenuItem_Click 方法,添加代码:

private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
{if (!project1.IsOpen){return;}SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "*.nspj|*.nspj";if (saveFileDialog.ShowDialog() == DialogResult.OK){xmlStore1.ProjectFilePath = saveFileDialog.FileName;project1.Repository.SaveChanges();}
}

6.最后进入 Form1_Load 方法,注释掉以下代码:

private void Form1_Load(object sender, EventArgs e)
{///……//project1.Name = "New Templet";//project1.Create();//display1.CreateDiagram("Diagram 1");///……
}

  完成以上步骤后一个基本的NShape编辑器就完成了。

NShape(开源矢量图形编辑器) 入门(二)相关推荐

  1. linux矢量图像编辑,Inkscape 1.0发布,开源矢量图形编辑器重要版本

    Inkscape 1.0终于来了! 这个已经存在了将近二十年的开源矢量图形编辑器终于达到了1.0状态. 除版本号外,Inkscape 1.0是一个重要版本. Inkscape 1.0标志着从GTK2移 ...

  2. linux矢量图像编辑,Inkscape - 开源矢量图形编辑器

    Inkscape是一款开源矢量图形编辑工具,并不同于Xara X.Corel Draw和Adobe Illustrator等竞争对手,它使用的是可缩放矢量图形(SVG)图形格式.SVG是一个广泛部署. ...

  3. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  4. 【github干货】主流深度学习开源框架从入门到熟练

    文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...

  5. macos安装vscode_VS Code 代码编辑器入门指南:核心组件与概念

    作者:思考问题的熊 写在前面 如果当电脑只能装一个软件还需要尽量不影响日常学习工作时,不知道你的选择会是什么.我把这个看似「荒诞」的问题理解为「All-in-One」的升级版拷问. 这个问题陪伴了我很 ...

  6. odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务

    odoo:开源 ERP/CRM 入门与实践 看了这张图,或许你对odoo有了一些兴趣. 这次Chat就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务. ...

  7. conan入门(二):conan 服务配置-密码管理及策略

    conan 服务配置 密码管理及策略配置 第一次以管理员身份(admin)使用默认密码(password)WEB登录入JFrog Artifactory后台时,系统就提示要求我修改密码,因为现有密码太 ...

  8. Typora ——一款Markdown编辑器入门教程

    Typora --Markdown编辑器入门教程 附上目录: 文章目录 Typora --Markdown编辑器入门教程 一. 序 二.前言 那么,什么是富文本格式?什么是Markdown? **Ma ...

  9. xhEditor编辑器入门基础

    xhEditor编辑器入门基础 width="468" height="15" src="http://pos.baidu.com/acom?adn= ...

  10. 软工个人作业 2 - 软件案例分析:免费开源 Markdown 编辑器

    软工个人作业 2 - 软件案例分析:免费开源 Markdown 编辑器 项目 内容 这个作业属于哪个课程 2023年北航敏捷软件工程社区 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目 ...

最新文章

  1. 代码中应用设计模式,看这一篇就够了
  2. libuv 高性能事件驱动库 简介
  3. 网站怎样建设才能更好的吸引住用户呢?
  4. 解决win下安装wordcloud出错问题
  5. HDU-1241 Oil Deposits (DFS)
  6. Android模拟器之神奇Genymotion的安装
  7. Spring框架声明式事务管理
  8. python数据结构与算法——栈、队列与双端队列
  9. linux下gdb调试程序
  10. Android 动态显示和隐藏软键盘
  11. css背景颜色设置为半透明,关于css设置背景色透明,半透明
  12. Selenium版本和浏览器版本对应问题
  13. Docker( 八)docker的安全以及安全加固
  14. 【误判心理学】查理芒格的25种误判心理倾向
  15. 程序员进阶!阿里P7级别面试经验总结,深度好文
  16. 刚进公司就把祖上十八代单传的代码优化了是什么体验?
  17. Photoshop切片工具的使用
  18. STM32 引脚电平拉不低
  19. 基于LoRa技术实现MESH组网的LoRaMESH技术简介
  20. 从零开始学习 centos - nagios 8月13日

热门文章

  1. php仿qq空间网页源码,516 仿QQ空间网页头部代码
  2. 分数计算机在线应用,在线连分数计算器
  3. 鸿蒙空间命运法则,洪荒之终极人族
  4. Zynga就收购顶尖移动设备游戏《Toon Blast》和《Toy Blast》的开发商伊斯坦布尔Peak公司达成协议
  5. 【调剂】齐齐哈尔大学接收调剂研究生
  6. 齐齐哈尔计算机应用软件学校,黑龙江齐齐哈尔计算机应用技术课程
  7. 基于单片机(STC89C52)的易燃气体浓度检测报警系统
  8. MySQL8.0.26的时候解压libs文件出现错误:依赖检测失败:mariadb-libs 被 mysql-community-libs-8.0.26-1.el7.x86_64 取代
  9. Excel 随机生成 算术题
  10. 蛋蛋读NVMe之一:为什么刘备需要NVMe