# PaintWorks
## 已实现的功能
* 直线绘制
* 圆的绘制+填充
* 椭圆绘制
* 多边形绘制+填充
* 已实现基础的UI交互,切换图形绘制模式
* 已实现markDraw,为各Figure提供被选中的虚线矩形框显示
* 已实现**图形编辑**
* 已实现**图形变换**
- 平移:已实现各图形的平移(通过点的平移实现)
- 旋转:已实现各图形的旋转(其中圆的旋转保持不变,椭圆旋转只能转90度)
- 缩放:已实现各图形的缩放(直线以中点为准,圆和椭圆以中心为准,多边形以绘制的第一个点为准)
* 已实现**图形裁剪**
* 只实现了直线与多边形的裁剪
* 直线裁剪为梁友栋-Barsky裁剪算法,多边形裁剪为单边裁剪算法
* 对所有直线与多边形进行裁剪
* 已实现**存储图形数据**
* 保存为bmp格式
* 已实现**3D六面体显示**
* 使用OpenGL库函数
* 可以使用键盘控制左右旋转
* 已实现UI基础交互
* 放大缩小
对所有图形同时放大缩小,缩放基准点为各图形自己的基准点,而非鼠标
* 填充
* 裁剪
* 平移
* 直线拖动中点平移
* 圆拖动圆心平移
* 椭圆拖动中心平移
* 多边形拖动中心平移
* 聚焦(点击图形让被选中图形在最高图层显示)
* 直线
* 圆
* 椭圆
* 多边形
* 旋转:拖动handle旋转
* 点:添加了三个相关支持函数
* 直线:使用点的支持函数实现
* 圆:只改变handle,其余均不动
* 椭圆:handle旋转至水平或垂直时,旋转90度
* 多边形:按键时不改变handle
## 下一步工作
## 目前进展
* 已实现缩放改为对单个图形进行缩放,裁剪改为对单个图形进行裁剪
* 已实现交互界面新增功能
* 平移:拖动矩形中心点
* 旋转:拖动延伸出来的点
* 已实现添加删除图形、清空图形按钮
* 已添加图形选中
* 直线:检测轮廓点
* 圆、椭圆、多边形:检测轮廓点+填充点
* 画布的curCtrl变化之后,通过信号-槽机制从widget向Mainwindow发送消息,改变当前绘图模式
* 已添加颜色控制按钮
* 选择颜色之后,线条与填充均为这种颜色
* **曲线绘制&编辑&变换**
* 已实现曲线绘制+拖动控制点编辑
* 曲线变换
* 平移
* 缩放
* 旋转
* 已实现选取
* isOn*函数检测该点是否在图形上
* isOn()检测该点是否在图形或标记点(markPoints,center,handle)上,isOnPlain()检测该点是否在图形本身上(不包括标记点)
## 可以改进的地方
## tips
* 解决了MainWindow直接控制当前GLWidget的问题
使用`dynamic_cast<GLWidget*>()`即可,可以不必再使用GLWidget的数组canvases(已去掉)
## bug
* ~~标签页关闭之后切换图形绘制模式会导致程序崩溃~~ 已使用dynamic_cast解决
应该让QMdiSubWindow在关闭时delete掉GLWidget,可能需要重写QMdiSubWindow的` virtual void closeEvent(QCloseEvent * closeEvent)` 函数,最好是将相关信号关联到Mainwindow的一个槽函数,省得再写QMdiSubWindow了。
* ~~椭圆刚生成的时候handle有问题~~ 已解决
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++、Qt实现底层绘图算法的绘图系统.zip
共65个文件
h:20个
cpp:20个
png:14个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 107 浏览量
2023-11-02
22:21:05
上传
评论
收藏 2.96MB ZIP 举报
温馨提示
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 -------- 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于C++、Qt实现底层绘图算法的绘图系统.zip (65个子文件)
project_ok
Point.cpp 4KB
Ellipse.cpp 5KB
Line.h 2KB
SimpleFigure.h 633B
CurveControl.cpp 3KB
mainwindow.h 1KB
CutWindow.cpp 2KB
Curve.h 1KB
Line.cpp 7KB
PolygonControl.cpp 5KB
Area.h 556B
CurveControl.h 878B
mainwindow.cpp 5KB
FigureControl.cpp 1KB
Circle.cpp 5KB
gl3dwidget.h 806B
CircleControl.cpp 4KB
Polygon.cpp 10KB
Figure.h 685B
glwidget.cpp 5KB
Curve.cpp 3KB
EllipseControl.h 808B
main.cpp 160B
Area.cpp 1KB
Point.h 2KB
docs
151220162_系统使用说明书.pdf 1.15MB
151220162_系统技术报告.pdf 871KB
screenshot.png 31KB
151220162_系统使用说明书.docx 671KB
151220162_系统技术报告.docx 611KB
CircleControl.h 793B
SimpleFigure.cpp 1002B
mainwindow.ui 9KB
PaintWorks.pro 1KB
PolygonControl.h 1KB
CompFigure.cpp 323B
FigureControl.h 1KB
paintworks_resource.qrc 579B
Circle.h 1KB
LineControl.cpp 4KB
PaintWorks.pro.user 18KB
Polygon.h 1KB
Ellipse.h 1KB
CutWindow.h 768B
images
fill.png 1KB
paintworks.png 7KB
polygon.png 3KB
scaleplus.png 4KB
ellipse.png 4KB
curve.png 470B
colorpicker.png 3KB
line.png 1KB
circle.png 2KB
scaleminus.png 4KB
clear.png 2KB
cut.png 1KB
delete.png 352B
LineControl.h 1KB
CompFigure.h 310B
glwidget.h 2KB
EllipseControl.cpp 3KB
README.md 3KB
gl3dwidget.cpp 2KB
paintworks.ico 66KB
paintworks.rc 57B
共 65 条
- 1
资源评论
程皮
- 粉丝: 258
- 资源: 2568
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功