2 Star 8 Fork 1

NJU-TJL / CG_Painter

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

计算机图形学 - 绘图系统

基于 Qt5 ( C++ ) 开发的 计算机图形学 - 绘图系统 (计算机图形学 课程作业)

核心算法模块,完成了直线生成(DDA算法、Bresenham算法),多边形生成,椭圆生成(中点椭圆算法),曲线生成(Bezier和B-spline),图元平移、旋转、缩放,线段剪裁(Cohen-Sutherland算法、Liang-Barsky算法)的实现。GUI程序实现了较为友好的用户交互UI,可以较为方便地画直线、多边形、椭圆、曲线,且可以保存画布、设定颜色、对所有类型的图元进行平移、旋转、缩放、删除。

下载地址:https://github.com/NJU-TJL/CG_Painter/releases/


Copyright © 2020 NJU-TJL

开放源代码许可

转载请注明原作者:https://github.com/NJU-TJL/CG_Painter


图片加载失败,可访问CSDN博客查看:https://blog.csdn.net/Kingsman_T/article/details/103880164

算法实现、设计过程详情,请见于报告(点击下载):

1578056334350

系统使用说明书

开发工具 Qt 5.9.8 + Visual Studio 2017
构建套件(编译) Desktop Qt 5.9.8 MSVC-2017 64bit(在VS2017中构建项目)
运行环境 Windows 10
打包工具 Enigma Virtual Box 9.40 Build 20191010
推荐分辨率 1920×1080

运行说明

​ 这里已打包生成了.exe文件,直接双击运行CG_Painter_GUI.exe文件即可。

​ 运行后的程序界面如下:

(中间为绘图区域;整个主窗口可以放大、缩小,绘图区域的大小也会自动随之变化)

1577350045088

下面对目前程序的功能与操作方式进行详细说明。

2.1 开始

单击“开始”选项,可以设定画笔颜色,以及保存当前画布为.bmp文件。

1577352193204

注:这里“保存图片”会在可执行程序同目录下生成.bmp文件。经过测试发现,如果将程序放在桌面(以及C盘中某些系统目录下),可能无法保存生成.bmp文件。若出现此情况,请更改.exe文件的存放位置。

2.2 图元拖动平移

非绘图状态下,将鼠标移动到某图元像素点附近(误差允许的范围是一个半径长为4个像素点的圆形区域),按住左键,拖动,即可将图元拖动平移。

1577350437589

2.3 绘制直线

绘制直线,首先要在左上角的选项栏中点击“直线”,然后选择使用的算法,之后就进入了直线的绘制状态(右下角有状态提示)。进入绘制状态后,随时可以按鼠标右键取消绘制。在中间的绘图区域第一次单击鼠标左键,确定直线的第一个端点,之后,随着鼠标的移动,直线动态变化。再次单击鼠标左键,确定第二个端点,绘制结束。

1577350569676

2.4 绘制多边形

这里与绘制直线类似,也是需要先在菜单栏选择绘制算法,进入绘制状态。绘图状态中,随时可以按鼠标右键取消绘制。在绘图区域中第一次单击鼠标左键,确定下多边形的第一个顶点。之后的操作与绘制直线的操作类似,依次按下鼠标左键,确定多边形顶点。最后,鼠标靠近多边形的起始点时,会自动贴合,此时单击左键,就完成一个闭合的多边形的绘制,也就绘制结束。

1577350681050

2.5 绘制椭圆

这里直接单击左上角选项栏的“椭圆”选项,就进入了椭圆绘制状态。在绘制状态也是随时按下鼠标右键就可以取消绘制。在绘制区域,第一次单击鼠标左键,会以单击位置为中心生成一个默认大小的椭圆。之后,在绘图区域的任意位置,按住鼠标左键,拖动,即可动态调整椭圆的长短轴大小(可多次调整)。调整完毕,只需要在任意位置双击鼠标左键,即可完成绘制。

1577350871388

2.6 绘制曲线

选项栏单击曲线,选择绘制的曲线类型,进入绘制状态。在绘图区域中依次单击鼠标左键,确定曲线控制点。再任意位置,按下鼠标右键后,完成绘制,生成控制点对应的曲线。完成绘制后,可通过拖动控制点调整曲线形状。

1577350971843

1577351285048

2.7 旋转

点击“旋转”选项,进入“旋转图元”状态(右下角提示)。第一次单击后,鼠标位置,出现旋转中心(绿色圆点)。之后,画布上的所有图元(包括椭圆、曲线等),可使用鼠标左键拖动进行旋转。按下右键,退出旋转。

1577351490646

2.8 缩放

点击“缩放”选项,进入“缩放图元”状态(右下角提示)。第一次单击后,鼠标位置,出现缩放中心(绿色圆点)。之后,画布上的所有图元(包括椭圆、曲线等),可使用鼠标左键拖动进行缩放(靠近/远离缩放中心)。按下右键,退出缩放。

1577351739116

2.9 裁剪

点击“裁剪”选项,在弹出的菜单项中,选择使用的裁剪算法后,进入“线段裁剪”状态(右下角提示)。之后,单击左键后移动鼠标,移动鼠标,绿色矩形的裁剪框的随鼠标移动而改变。再次单击左键,即可完成裁剪。

注:这里的裁剪框是对画布上的所有直线图元而言,裁剪后保留框内的线段部分。

1577351995112

2.10 删除图元

鼠标靠近图元后,按下右键,在弹出的菜单中,选择“删除”,即可删除对应图元。

1577352411218

MIT License Copyright (c) 2020 NJU-TJL Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

【计算机图形学 - 绘图系统】核心算法模块,完成了直线生成(DDA算法、Bresenham算法),多边形生成,椭圆生成(中点椭圆算法),曲线生成(Bezier和B-spline),图元平移、旋转、缩放,线段剪裁(Cohen-Sutherland算法、Liang-Barsky算法)的实现。GUI程序实现了较为友好的用户交互UI,可以较为方便地画直线、多边形、椭圆、曲线,且可以保存画布、设定颜色、对所有类型的图元进行平移、旋转、缩放、删除。 展开 收起
C++
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/NJU-TJL/CG_Painter.git
git@gitee.com:NJU-TJL/CG_Painter.git
NJU-TJL
CG_Painter
CG_Painter
master

搜索帮助