基于.net之仿Windows画板设计

队  长:周 洋

小组成员:周寅莹 袁晓旭 江春鹏 蒋彬含 朱振宇 屈生辉 万里骏 彭子航

指导老师:余敦辉

所在班级:湖北大学计算机科学与技术2016级

摘要: 随着社会的不断发展以及计算机的不断普及,人们对绘图的要求越来越高,对绘图功能也提出了更高更全面的要求。不同年龄不同身份的人,需求有所不同。现在普通用户普遍使用的是Windows系统下自带的Windows画图工具,它可以实现最为基本的画图功能,但使用起来不够灵活,功能也不是很完善。基于此,本设计尝试按照Windows画图工具的设计思想,综合考虑多方面因素,通过C# 程序语言开发设计一款基于 .Net Framework的功能更为完善、使用起来更为灵活的WinForm窗体画图软件,使其不仅能够达到满足日常画图的需求,且具有便于存储编辑和展示、功耗小、易扩展、界面人性化等优点。

关键词: C#;.Net Framework;WinForm窗体;画图软件

绪论

随着操作系统不断的更新换代,其自带的画图板界面及功能也在不断变化,例如XP、Vista、Win10,它们画图板的界面布局风格以及功能都有所不同,这表明尽管是简简单单的一个操作系统自带画图板,系统设计人员也没有停止对它的不断研究与探索,他们在不断地寻找更为人性化、更能满足大众需求的设计模式。随着社会的不断发展以及计算机的不断普及,人们对画的要求越来越高,对绘图功能也提出了更高更全面的要求。许多用户由于自身的画图习惯或者是画视觉效果不同,对传统的画图工具可能感觉不是特别满意,就像孩子总是喜欢画可爱型,而成人则画实用的。不同年龄不同身份的人,需求不同。现在大众普遍使用的是Windows系统下自带的Windows画图软件,它可以实现一些简单的基本画图功能,但缺乏灵活性。本次课程设计就是基于Windows画图软件的思想,综合考虑多方面因素,尝试开发一款仿Windows画板,使其能达到满足日常画图的需求,便于存储编辑和展示,且要求功耗小且界面人性化,功能易扩展。

软件需求分析

基本图形

为了满足用户的基本画图需要,我们一共提供了22种基本图形,具体包括直线、曲线、椭圆、矩形、圆角矩形、任意圆弧、任意多边形、等腰三角形、直角三角形、菱形、五六边形、四五六角星、上下左右四个方向的箭头、圆角文本框、折线、直角线。

基本字符

考虑到用户在绘图过程中,难免会有需要用到字符的时候,对此,我们提供了四种字符形式供用户选择,分别为汉字、字母、数字和符号。

样式选择

为了避免线条样式的单一,我们提供颜色和线型两种选择。其中,颜色包括固定的颜色盘和允许自定义的调色盘;线型包括线形和线宽。具体介绍如下:
颜色盘:颜色盘提供了固定的、最基本的十二种颜色;
调色盘:允许用户自定义颜色;
线形:线条的形状有五种,分别为直线、虚线、双点划线、点划线和双划线。其中,点线可以用来表示立体线框中可见的轮廓线;虚线可以用来表示立体线框中不可见的轮廓线;点划线、双点划线可以用来表示中心线;
线宽:线条的宽度为1~20个像素单位;

基本操作

文件操作及加载

用户画图,有时候并不是一次就能完成,往往需要先暂时保存,然后下次再接着绘制。因此,画板必须能够提供存储和再次打开,加载后继续编辑的功能。同时,存储格式决定了加载的速度,无论速度快慢,都应该显示加载的过程,这样才能告诉用户整个加载过程的进度如何,而不是让用户盲等,这样体验效果极其不佳。

撤销

用户画图,绝不是一蹴而就,一帆风顺的,免不了出现各种错误,如若没有撤销功能,那么一旦出错就将前功尽弃,半天的心血化为一滩泡影,这是用户最不希望看到、最不能忍受的,因此必须具备撤销功能。对此,我们提供了两种撤销模式,分别为向前撤销和向后撤销。
向后撤销:如果用户执行了一步操作后,觉得不满意,便可以通过向后撤销回到上一步
向前撤销:如果用户撤销当前操作后,又后悔了,那么便可以使用向前撤销,回到撤销前的状态

复制、剪切、粘贴

画图过程中,若需要频繁的使用某一种图形、并对其进行操作是一件非常繁琐的事情,若能直接在原图形上进行拷贝,再进行少量修改,将节省用户不少时间。因此,复制和粘贴这两种功能必不可少。
剪切是删除和复制的结合体,它不同于删除,因为删除某个图形,那么这个图形便真的不复存在,但剪切相当于是将图形从画板上移到另一个地方保存起来,等到要用的时候,便把它再次取出来,以复制的形式进行粘贴,这也给用户的操作带来了便利。

核心操作

图形填充

图形填充分为直接图形填充和区域填充两种形式,其中前者是选中图形,对图形内部进行填充;而后者则是指定一个闭合的区域,进行填充。相较于前者,后者具有更高的灵活性,但两者均可以通过调色板来选则填充的颜色。

画面裁剪

画面裁剪分为内裁剪和外裁剪两种形式,裁剪框为虚线矩形。其中,内裁剪只保留裁剪框内部的内容,裁剪框外部的内容丢弃;外裁剪只保留裁剪框外部的内容,裁剪框内部的内容丢弃。两种模式均满足裁剪前是一个图形,裁剪后仍是一个图形的“封闭原则”。

图形选中

图形的选中,是为了便于对图形进行各项操作,包括平移、缩放、对称等。因此,为了便于后面的操作,在图形选中这一板块,必须把图形用来进行操作的各个热点显示出来,包括矩形的四个顶点以及四条边的中点(用一个红色虚线矩形框将被选中图形包裹,表示该图形被选中)。

组合与打散

画图过程中,难免会存在需要同时将两个或多个图形一起移动的情形或者用户希望将多个简单的基本图形组合为更为复杂的图形,那么组合与打散便是不可或缺的操作,它给用户大规模操作、自定义图形提供了便捷。

对称、旋转、平移、缩放

画图中最基本的操作莫过于平移、对称、旋转和缩放,它允许用户随意的对图形的大小、位置、方向进行操作,以满足画图的需要,

图形的对齐

要想画图好看,少不了各种形式的对齐,对此,我们提供了三种对齐选择,分别为左对齐、右对齐和居中对齐。

图形的檫除

图形的擦除又可以理解为图形的删除,对于已经操作了很久才发现的无用图形,是无法通过撤销而去除的,这时候就需要手动的擦除某个指定的图形,增加了图形操作的灵活性。

状态选择

状态选择是为了给用户提供更好的界面效果,方便用户作图。对此,我们提供了三种画板状态,分别为标尺、网格线和状态栏,并且这三种状态用户可以根据自身需要随意组合。
标尺:在画板周围显示刻度,方便用户衡量图形的大小
网格线:网格线可以让用户更直观地观察直线是否水平或垂直、多个图形的相对位置和是否对齐
状态栏:状态栏显示焦点坐标,方便用户掌握鼠标的位置

PPT展示













































项目源代码

本项目的源代码已在作者的github个人主页上发布,欢迎各位读者下载使用HubuPaint。

相关下载

1、PPT展示文件(提取码:5670)
2、概要设计书说明书(提取码:yckz)
3、计算机图形学课程设计文档–.net的画板设计(提取码:xiyv)
4、软件需求说明书(提取码:fhl0)
5、详细设计书说明书(提取码:k3ld)
6、用户使用说明书(提取码:lue0)

声明

此项目不可作为商业用途,仅供热爱计算机图形学的工作者参考学习,内部代码出现的任何问题本团队一概不负责,如有学习或者代码咨询等问题,可以留言联系本人,特此声明! 周 洋 2019/06/08

基于.net之仿Windows画板设计相关推荐

  1. 基于MATLAB的仿windows画图板功能的实现

    1.仿真预览 2.部分核心代码 % --- Executes on selection change in popupmenu2. function popupmenu2_Callback(hObje ...

  2. 基于Python所写的超级画板设计

    点击以下链接获取源码资源: https://download.csdn.net/download/qq_64505944/87959096?spm=1001.2014.3001.5503 <超级 ...

  3. 转 CanvasPaint—基于HTML5的Windows画板

    Windows 画图程序一直伴随着 Windows 各个版本,它"其貌不扬",几乎没有什么用处的程序拥有最基本的绘图功能,很适合用来涂鸦.HTML5 的 Canvas 对象使在线绘 ...

  4. java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告

    [实例简介] java仿windows简易计算器课程设计 源码+报告 课直接运行. [实例截图] [核心代码] Java课设-简易计算器 └── Java课设-简易计算器 ├── Java课程设计.d ...

  5. qt制作一个画板_基于Qt的画图板的设计与实现(含录像)

    基于Qt的画图板的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文20000字,程序代码,答辩PPT,答辩视频录像) 摘要 本文的主要内容是记述画图板的设计与实现课程设计中的一些关键技术和辅 ...

  6. java 仿qq mysql_基于Java远程通信(仿QQ)及应用研究设计(MySQL)(含录像)

    基于JAVA远程通信(仿QQ)及应用研究设计(MySQL)(含录像)(毕业论文13000字,程序代码,MySQL数据库) 随着信息社会脚步的日益加快,远程通信的应用正在人们的生产生活中扮演着极其重要的 ...

  7. 基于Qt的仿酷狗音乐播放器设计(二)

    简述 在上一文"基于Qt的仿酷狗音乐播放器设计(一)"中,博主给出了仿酷狗界面的部分内容,在本文中将继续分析酷狗界面,并作出相应的分析. 下面我们来看一下酷狗界面中的左侧滑动页控制 ...

  8. java聊天程序论文_【基于java的仿qq聊天程序的设计与实现论文最终版材料】

    基于java的仿qq聊天程序的设计与实现(论文)(最终版) <基于java的仿qq聊天程序的设计与实现(论文).doc>由会员分享,可免费在线阅读全文,更多与<基于java的仿qq聊 ...

  9. 基于Android的仿美团外卖系统设计与实现 文档+源码+视频

    基于Android的仿美团外卖系统设计与实现 演示视频 摘 要 为了巩固所学 Android 基础知识,要开发一款仿美团外卖的项目,该项目与我们平常看到的美团外卖项目界面比较类似,展示的内容包括店铺. ...

最新文章

  1. 被称为“C#圣经”的权威著作!
  2. 从成本角度看Java微服务
  3. 编码过程中的问题总结
  4. 卓越程序员和优秀程序员有哪些区别?
  5. 在python中requests模块怎么安装_Python requests模块在Windows下安装
  6. 阿里云成为首个通过《面向公有云模式的政务云服务》测评的厂商
  7. IBM希望其“裁剪”过的Swift能够引诱你使用BlueMix云
  8. jsp中post提交和get提交乱码解决_统一请求编码
  9. Docker下redis与springboot
  10. 根据各工序时间画aoe网_灯饰画的优点以及定制要求
  11. mysql不能插入中文
  12. 手动编译包含两个import自写类的java类。
  13. linux redis玂家链接不上,Unicode编码的熟悉与研究过程(内附全部汉字编码列表)...
  14. 安装WPS后,word文件无法预览,无法右键新建的解决办法
  15. 恢复matlab文件关联
  16. WebApp最佳实践用户体验篇:针对多种屏幕尺寸合理设计
  17. 【数据可视化】第五章—— 基于PyEcharts的数据可视化
  18. 华为很快搭载鸿蒙系统,华为高管确认很快将会推出搭载鸿蒙操作系统的智能手表...
  19. 【AI系列】1关于人工智能发展历史、资料推荐、技术体系的整理
  20. freeswitch语音识别一系列干货

热门文章

  1. Android 10 网络权限
  2. OpenCV实战(二)——答题卡识别判卷
  3. 选择自建商城和盈利模式。
  4. 若依源码分析(10)——通知管理
  5. Hbase启动后,在主节点只有Hmaster,而在slave节点上没有Hregionserver
  6. grails mysql_grails连接mysql
  7. Qt音视频开发26-ffmpeg播放器
  8. ISE的使用(文字版)
  9. 牛车水茶渊品茗,新加坡总理与英国女王同款文化体验
  10. ofdm 误码率 matlab,OFDM不同信噪比下的误码率matlab源码