NShape(开源矢量图形编辑器) 入门(二)
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(开源矢量图形编辑器) 入门(二)相关推荐
- linux矢量图像编辑,Inkscape 1.0发布,开源矢量图形编辑器重要版本
Inkscape 1.0终于来了! 这个已经存在了将近二十年的开源矢量图形编辑器终于达到了1.0状态. 除版本号外,Inkscape 1.0是一个重要版本. Inkscape 1.0标志着从GTK2移 ...
- linux矢量图像编辑,Inkscape - 开源矢量图形编辑器
Inkscape是一款开源矢量图形编辑工具,并不同于Xara X.Corel Draw和Adobe Illustrator等竞争对手,它使用的是可缩放矢量图形(SVG)图形格式.SVG是一个广泛部署. ...
- 【完结】给新手的12大深度学习开源框架快速入门项目
文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...
- 【github干货】主流深度学习开源框架从入门到熟练
文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...
- macos安装vscode_VS Code 代码编辑器入门指南:核心组件与概念
作者:思考问题的熊 写在前面 如果当电脑只能装一个软件还需要尽量不影响日常学习工作时,不知道你的选择会是什么.我把这个看似「荒诞」的问题理解为「All-in-One」的升级版拷问. 这个问题陪伴了我很 ...
- odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
odoo:开源 ERP/CRM 入门与实践 看了这张图,或许你对odoo有了一些兴趣. 这次Chat就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务. ...
- conan入门(二):conan 服务配置-密码管理及策略
conan 服务配置 密码管理及策略配置 第一次以管理员身份(admin)使用默认密码(password)WEB登录入JFrog Artifactory后台时,系统就提示要求我修改密码,因为现有密码太 ...
- Typora ——一款Markdown编辑器入门教程
Typora --Markdown编辑器入门教程 附上目录: 文章目录 Typora --Markdown编辑器入门教程 一. 序 二.前言 那么,什么是富文本格式?什么是Markdown? **Ma ...
- xhEditor编辑器入门基础
xhEditor编辑器入门基础 width="468" height="15" src="http://pos.baidu.com/acom?adn= ...
- 软工个人作业 2 - 软件案例分析:免费开源 Markdown 编辑器
软工个人作业 2 - 软件案例分析:免费开源 Markdown 编辑器 项目 内容 这个作业属于哪个课程 2023年北航敏捷软件工程社区 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目 ...
最新文章
- 代码中应用设计模式,看这一篇就够了
- libuv 高性能事件驱动库 简介
- 网站怎样建设才能更好的吸引住用户呢?
- 解决win下安装wordcloud出错问题
- HDU-1241 Oil Deposits (DFS)
- Android模拟器之神奇Genymotion的安装
- Spring框架声明式事务管理
- python数据结构与算法——栈、队列与双端队列
- linux下gdb调试程序
- Android 动态显示和隐藏软键盘
- css背景颜色设置为半透明,关于css设置背景色透明,半透明
- Selenium版本和浏览器版本对应问题
- Docker( 八)docker的安全以及安全加固
- 【误判心理学】查理芒格的25种误判心理倾向
- 程序员进阶!阿里P7级别面试经验总结,深度好文
- 刚进公司就把祖上十八代单传的代码优化了是什么体验?
- Photoshop切片工具的使用
- STM32 引脚电平拉不低
- 基于LoRa技术实现MESH组网的LoRaMESH技术简介
- 从零开始学习 centos - nagios 8月13日
热门文章
- php仿qq空间网页源码,516 仿QQ空间网页头部代码
- 分数计算机在线应用,在线连分数计算器
- 鸿蒙空间命运法则,洪荒之终极人族
- Zynga就收购顶尖移动设备游戏《Toon Blast》和《Toy Blast》的开发商伊斯坦布尔Peak公司达成协议
- 【调剂】齐齐哈尔大学接收调剂研究生
- 齐齐哈尔计算机应用软件学校,黑龙江齐齐哈尔计算机应用技术课程
- 基于单片机(STC89C52)的易燃气体浓度检测报警系统
- MySQL8.0.26的时候解压libs文件出现错误:依赖检测失败:mariadb-libs 被 mysql-community-libs-8.0.26-1.el7.x86_64 取代
- Excel 随机生成 算术题
- 蛋蛋读NVMe之一:为什么刘备需要NVMe