绘图板程序设计及其具体实现 第一篇
成果展示
首先展示几个使用本绘图板程序的绘图成果。
下面是程序的功能介绍(也是由本绘图板程序绘制的)。
总体架构
由三个包和一个主窗口类构成,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类 | 主窗口类 |
更多:
第一篇
第二篇
第三篇
第四篇
第五篇
第六篇
第七篇
最终篇
源代码
绘图板程序设计及其具体实现 第一篇相关推荐
- c语言程序设计林小茶,C语言第一篇概述林小茶
<C语言第一篇概述林小茶>由会员分享,可在线阅读,更多相关<C语言第一篇概述林小茶(8页珍藏版)>请在人人文库网上搜索. 1.第一章,C,语言概述,1.1,程序与程序设计语言, ...
- 绘图板程序设计及其具体实现 第三篇
工具包详细解析 (二) 输入处理工具类 SafeKeyboardInput类 SafeKeyboardInput类是一个安全的键盘输入处理类,实现了KeyListener接口.当由于种种原因导致帧速率 ...
- 20162302 《程序设计与数据结构》第一周学习总结
20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...
- 编程书籍阅读随谈(第一篇)
做.NET程序员也有几年了,从在大学到现在读过的编程书也的确有不少,读过.NET.Java.Python.Node.JS.底层原理等等的书籍.不知道自己学习的怎么样,但是也的确去学习过这些东西. (备 ...
- C博客作业00--我的第一篇博客
这个作业属于哪个班级 C语言–网络2011/2012 这个作业的地址 C博客作业00–我的第一篇博客 这个作业的目标 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记. ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...
- C++快速入门|系列(第一篇)
目录 C语言和C++的区别 C++的特点 OOP是什么? HELLO,WORLD!输出 cout进行标准输出 cin进行标准输入 巩固--挑战习题 结尾 C语言和C++的区别 与C语言不同,C语言是面 ...
- 【我的第一篇博客】——上个月学习总结(4月)
大家好,我是monitor_sun 目录 前言 学习月总结 1.复盘上个月(4月)的学习成果 2.在本月/季度的学习过程中遇到的难题有哪些,是如何解决的,从中学到了什么? 3.有什么事情是自己一直想做 ...
- 第一篇【Python】基础-关东升-专题视频课程
第一篇[Python]基础-833人已学习 课程介绍 本书是智捷课堂开发的立体化图书中的一本,所谓"立体化图书"就是图书包含:书籍.视频.课件和服务等内容. 其中第 ...
最新文章
- Active Object pattern
- codeforce 768B Code For 1
- 后宫佳丽三千,假如古代皇帝也懂负载均衡算法...
- LeetCode之Next Greater Element I
- qt如何捕获应用程序输出_企业应用程序中需要捕获的5大Java性能指标
- 二进制分类(信息学奥赛一本通-T1412)
- TStringGrid - 重绘时RECT解决一块空白区域
- android room_Android Room –待办事项清单应用程序
- Wireshark 导出特定分组
- [ C语言版 ] 数独计算器 [ 搜索剪枝法 ]
- html js css 简明教程,HTML+CSS+JavaScript网页制作简明教程
- 圣光照耀联盟—PostgreSQL临时表的创建与使用过程
- NGUI------UIToggle
- 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
- 栈模拟递归 遍历二叉树的正确写法
- 南京那边可以学计算机绘画,电脑画画软件有哪些?推荐几款可以教画画的app
- Deep Residual Learning for Image Recognition浅读与实现
- python 使用SVM进行简单的图像分类
- C语言关于scanf语句输入的三种方式。
- 【TI-mmWave】一、IWR6843ISK-ODS毫米波雷达【固件烧写和上手使用】流程