成果展示

首先展示几个使用本绘图板程序的绘图成果。

下面是程序的功能介绍(也是由本绘图板程序绘制的)。


总体架构

由三个包和一个主窗口类构成,utils包中为绘制图形中用到的所有工具类,element包中为所有的图形元素类,strategy包中为所有的绘图策略类。

大致的设计思想是,utils包中存储本程序中用到的所有工具,有绘图处理工具,输入处理工具,渲染处理工具;element包中存储所有需要绘制的图形元素;strategy包中存储所有所需的绘图策略;最后由一个主程序调用策略去执行图形元素的绘制。所有类的简要说明如下表。

  • 类及接口的一览表
类名/接口名 说明
utils Vector2f类 表示一个二维向量的类,包含向量的一些运算操作,用于表示平面空间中一个点的位置
utils Matrix3x3f类 表示三维矩阵的类,包含矩阵的一些运算操作,用于平面中图形的变换操作
utils FrameRate类 计算帧速率的类
utils Framework抽象类 一个抽象的利用双缓冲策略的窗口框架
utils SwingFramework抽象类 一个使用Swing做绘制实现的窗口框架
utils SafeKeyboardInput类 一个安全的处理键盘输入的类
utils RelativeMouseInput类 一个可以切换相对/绝对鼠标模式的处理鼠标输入的类
utils Utilty类 处理坐标变换,图形绘制,文字绘制的工具类
element ImageElement抽象类 所有可以绘制图形类的父类
element Points类 一个包含一系列点的类
element BeginEndImageElement抽象类 一个可以选择起点和终点由拖动鼠标来形成的图形类
element FillPolygon类 填充多边形类
element Similarable接口 可以进行快捷选择操作的图形,关于快捷选择操作,后面会有详细介绍
element StringElement类 绘制字符串的图形类
element SaveImageElement类 当前绘制图像被保存之后,添加此类表示当前图像已被保存
strategy Strategy抽象类 所有绘制策略类的父类
strategy NullStrategy类 一个不做任何处理的策略类
strategy PointsStrategy类 处理绘制一系列点(Points类)的策略类
strategy BeginEndStrategy抽象类 处理绘制可以选择起点和终点由拖动鼠标来形成的图形类(BeginEndImageElement抽象类)的策略类
strategy FillPolygon类 处理绘制填充多边形类(FillPolygon类)的策略类
strategy StringStrategy类 处理绘制字符串的图形类(StringElement类)的策略类
default Editor类 主窗口类

更多:

第一篇
第二篇
第三篇
第四篇
第五篇
第六篇
第七篇
最终篇
源代码

绘图板程序设计及其具体实现 第一篇相关推荐

  1. c语言程序设计林小茶,C语言第一篇概述林小茶

    <C语言第一篇概述林小茶>由会员分享,可在线阅读,更多相关<C语言第一篇概述林小茶(8页珍藏版)>请在人人文库网上搜索. 1.第一章,C,语言概述,1.1,程序与程序设计语言, ...

  2. 绘图板程序设计及其具体实现 第三篇

    工具包详细解析 (二) 输入处理工具类 SafeKeyboardInput类 SafeKeyboardInput类是一个安全的键盘输入处理类,实现了KeyListener接口.当由于种种原因导致帧速率 ...

  3. 20162302 《程序设计与数据结构》第一周学习总结

    20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...

  4. 编程书籍阅读随谈(第一篇)

    做.NET程序员也有几年了,从在大学到现在读过的编程书也的确有不少,读过.NET.Java.Python.Node.JS.底层原理等等的书籍.不知道自己学习的怎么样,但是也的确去学习过这些东西. (备 ...

  5. C博客作业00--我的第一篇博客

    这个作业属于哪个班级 C语言–网络2011/2012 这个作业的地址 C博客作业00–我的第一篇博客 这个作业的目标 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记. ...

  6. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...

  7. C++快速入门|系列(第一篇)

    目录 C语言和C++的区别 C++的特点 OOP是什么? HELLO,WORLD!输出 cout进行标准输出 cin进行标准输入 巩固--挑战习题 结尾 C语言和C++的区别 与C语言不同,C语言是面 ...

  8. 【我的第一篇博客】——上个月学习总结(4月)

    大家好,我是monitor_sun 目录 前言 学习月总结 1.复盘上个月(4月)的学习成果 2.在本月/季度的学习过程中遇到的难题有哪些,是如何解决的,从中学到了什么? 3.有什么事情是自己一直想做 ...

  9. 第一篇【Python】基础-关东升-专题视频课程

    第一篇[Python]基础-833人已学习 课程介绍         本书是智捷课堂开发的立体化图书中的一本,所谓"立体化图书"就是图书包含:书籍.视频.课件和服务等内容. 其中第 ...

最新文章

  1. Active Object pattern
  2. codeforce 768B Code For 1
  3. 后宫佳丽三千,假如古代皇帝也懂负载均衡算法...
  4. LeetCode之Next Greater Element I
  5. qt如何捕获应用程序输出_企业应用程序中需要捕获的5大Java性能指标
  6. 二进制分类(信息学奥赛一本通-T1412)
  7. TStringGrid - 重绘时RECT解决一块空白区域
  8. android room_Android Room –待办事项清单应用程序
  9. Wireshark 导出特定分组
  10. [ C语言版 ] 数独计算器 [ 搜索剪枝法 ]
  11. html js css 简明教程,HTML+CSS+JavaScript网页制作简明教程
  12. 圣光照耀联盟—PostgreSQL临时表的创建与使用过程
  13. NGUI------UIToggle
  14. 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
  15. 栈模拟递归 遍历二叉树的正确写法
  16. 南京那边可以学计算机绘画,电脑画画软件有哪些?推荐几款可以教画画的app
  17. Deep Residual Learning for Image Recognition浅读与实现
  18. python 使用SVM进行简单的图像分类
  19. C语言关于scanf语句输入的三种方式。
  20. 【TI-mmWave】一、IWR6843ISK-ODS毫米波雷达【固件烧写和上手使用】流程

热门文章

  1. 走廊上的相机安装及调试方法
  2. 探索新科技:3DVR电子楼书引领视觉体验革命
  3. windows任务计划程序
  4. 发表计算机SCI论文,是先写中文,还是直接写英文论文? - 易智编译EaseEditing
  5. C语言 | 进阶之路第一关
  6. Unicode 编码范围
  7. 从数据解读1号病人导致意大利疫情大爆发
  8. Schtasks命令详解
  9. 配置微信公众号token验证失败
  10. WPS AI 详细体验教程!手把手教你体验AI