简单图形系统(2D)
语言:Python
环境:Pycharm
需要以计算机图形学的方法进行设计,通过编写函数实现功能(绘制、平移、旋转、缩放等),不能使用插件或预置的图形处理函数!
具体功能:
1.可以通过交互式方式绘制直线、折线、矩形(包括正方形)、椭圆(包括圆)、贝塞尔曲线、多边形等基本图元;
要给出这些基本图元的基本数据结构,如直线就必须记录下两个端点,同时还要提供绘图所用的函数。按照面向对象的编程思想,尽可能使这些图元类有一个清晰有效的组织形式,以方便系统的扩充。另外从文档的角度看,需要设计一个图形链表来记录用户所绘制的图元,以方便对其管理;
2 . 可以设置线条的颜色、风格和粗度,可以设置填充风格、颜色和图样;
在界面上必须提供一个进行设置的接口,如属性设置面板,在内部各种图元必须具备相应的数据成员
3.可以对线条进行描绘,可以对封闭图元进行填充(上面是指在绘图前可以进行属性设置,本条是指在图元绘制好后的再对其进行动态修改);
4.可以对图元进行点选(直接通过单击左键选择)和圈选(用鼠标拉出一个矩形框进行选择);
交互式操作,其中点选要用到引力场技术,而圈选则要判断整个图形是否位于圈选框(鼠标拉出的矩形框)内,直线类图形判断所有的节点是否位于圈选框内即可,对于曲线要判断围绕该曲线的外框(矩形)是否位于圈选框内。为了区分选中图形和未选中图形,图元内部需要设置一个标志位;
5.可以对选中的图元进行平移、缩放、旋转和翻转等变换;
6.可以改变图形的叠放层次;“层次变换”则是涉及图元之间的相对位置关系,所以它是针对整个图形链表的。图形的层次实际上是由其在图形链表中的位置决定,在链表前面的,先绘制,在屏幕上就处于下面,在链表末尾的,后绘制,在屏幕上就处于上面,因此改变图元层次只需图元在图形链表中的位置
7.可以通过调节贝塞尔曲线的控制柄来修改其形状;
8.可以查看鼠标指针的当前坐标,可以看到选中图形的位置和尺寸信息;涉及交互技术,这需要实时的将数据封装成消息传递到信息面板上
9.可以使用吸管工具获取屏幕像素的颜色
10.提供菜单和命令按钮(工具箱)两种命令方式,提供鼠标和键盘两种操作方式
这也是交互式图形系统的一个重要内容,每一种绘图操作都将提供菜单和工具箱两种命令方式,比如用户要画一条直线,可以通过“图形”菜单下的“直线”命令完成,也可以直接单击工具箱上的“直线”按钮操作。对于“移动”等功能,既可以用鼠标来完成,也可以通过相应的快捷键来完成,这主要涉及消息的处理
11.可以对所做操作进行无限次撤销和恢复,用链表作为历史记录的数据结构
12.可以将画面内容保存为文件,可以读取文件,为每个图元类实现序列化