基于opengl编写简单的二维绘图软件
一、开发环境说明
- 操作系统:windows
- 开发软件:Visual Studio 2017
- 编程语言:基于控制台下的opengl
- 用到的库: glut
opengl环境配置可参照上一篇博客:控制台+OPENGL配置说明[GLUT篇]
二、内容说明
1、 功能介绍
- 可以绘图直线、三角形、四边形、圆形、椭圆、平行四边形、六边形
- 可以选择绘制颜色
- 可以选择线条粗细
- 绘制的图形能导出文件,也能加载文件;
- 可以清空画布
2、操作说明
- 鼠标左键按下:绘制图形
- 鼠标右键点击:弹出菜单选择功能
3、程序目录截图
4、程序部分代码展示
void itDisplay()
{glClear(GL_COLOR_BUFFER_BIT); //清屏for(int i=0; i<=count1-1; i=i+2){//绘制线drawThread(point1[i].x,point1[i].y,point1[i+1].x,point1[i+1].y,point1[i].cx,point1[i].cy,point1[i].cz, point1[i].pointsize, point1[i].model);}for(int i=0; i+2<=count2; i=i+3){//绘制三角形drawTriangle(point2[i].x,point2[i].y,point2[i+1].x,point2[i+1].y,point2[i+2].x,point2[i+2].y,point2[i].cx,point2[i].cy,point2[i].cz, point2[i].pointsize, point2[i].model);}if((count2+1)%3==2){drawThread(point2[count2-1].x,point2[count2-1].y,point2[count2].x,point2[count2].y,point2[count2-1].cx,point2[count2-1].cy,point2[count2-1].cz, point2[count2 - 1].pointsize, point2[count2 - 1].model);}for(int i=0; i<=count3-1; i=i+2){//绘制四编写drawRectangle(point3[i].x,point3[i].y,point3[i+1].x,point3[i+1].y,point3[i].cx,point3[i].cy,point3[i].cz, point3[i].pointsize, point3[i].model);}for(int i=0; i<=count4-1; i=i+2){//绘制圆drawCircle(point4[i].x,point4[i].y,point4[i+1].x,point4[i+1].y,point4[i].cx,point4[i].cy,point4[i].cz, point4[i].pointsize, point4[i].model);}for (int i = 0; i <= count5 - 1; i = i + 2){//绘制平行四边形drawRectangleParral(point5[i].x, point5[i].y, point5[i + 1].x, point5[i + 1].y, point5[i].cx, point5[i].cy, point5[i].cz, point5[i].pointsize, point5[i].model);}for (int i = 0; i <= count6 - 1; i = i + 2){//绘制6边形DrawSixBianXing(point6[i].x, point6[i].y, point6[i + 1].x, point6[i + 1].y, point6[i].cx, point6[i].cy, point6[i].cz, point6[i].pointsize, point6[i].model);}for (int i = 0; i <= count7 - 1; i = i + 2){DrawSiBianxing(point7[i].x, point7[i].y, point7[i + 1].x, point7[i + 1].y, point7[i].cx, point7[i].cy, point7[i].cz, point7[i].pointsize, point7[i].model);}glFlush(); //送所有输出到显示设备//glutPostRedisplay();
}
5、 运行效果展示
三、测试用例及代码下载
- 测试文件下载:双击exe文件可以直接运行
- 整个工程代码下载
基于opengl编写简单的二维绘图软件相关推荐
- 基于Capacitor编写Ionic React二维码扫描应用
在上一篇文章中,我们简要演示了如何使用capacitor-plugin-dynamsoft-barcode-reader构建跨平台二维码扫描应用.在本文中,我们将使用Ionic React来构建一个二 ...
- Grapher是二维绘图软件,主要用于绘制剖面图、直方图、曲线图等
可视化数据 以最佳状态呈现您的数据.Grapher 提供高质量的绘图工具,因此您可以充分利用数据.Grapher 提供超过 80 种不同的 2D 和 3D 图形选项,以适应从地质和水文到环境工作和建筑 ...
- 有限元方法入门:有限元方法简单的二维算例(三角形剖分)
有限元方法简单的二维算例(三角形剖分) 文章目录 有限元方法简单的二维算例(三角形剖分) 算例描述 变分问题 有限元离散 问题转化 有限元三要素 参考单元与一般单元 一般单元上的形函数 一般单元上的积 ...
- 有限元方法入门:有限元方法简单的二维算例(矩形剖分)
#有限元方法简单的二维算例(矩形剖分) 算例描述 我们对下述椭圆边值问题 \label{eq1}{−Δu=fu∣∂Ω=0\left \{ \begin{aligned} & -\Delta u ...
- Agg vs. Cairo 二维绘图引擎之比较和选择
转帖自: http://blog.csdn.net/cheungmine/article/details/5927909 当今时代对于作为二维图形软件开发者, 是幸运的.因为除了Windows GDI ...
- autocad2007二维图画法_cad怎样绘制简单的二维图形
CAD绘制二维图形非常的简单,大家经常用它来画图,下面是学习啦小编带来关于cad怎样绘制简单的二维图形的内容,希望可以让大家有所收获! cad绘制简单二维图形的方法 1.绘图菜单绘图菜单是绘制图形最基 ...
- 【MATLAB】二维绘图 ( 绘制二维图像 | 设置图像样式 )
文章目录 一.绘制二维图像 1.二维绘图步骤 2.二维绘图步修饰 3.代码示例 二.设置图像参数 1.图像参数 2.代码示例 一.绘制二维图像 1.二维绘图步骤 绘图前需要给定 xxx 轴 , yyy ...
- 基于jquery类库的绘制二维码的插件jquery.qrcode.js
jquery.qrcode.min.js 如下 (function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.d ...
- MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息
MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息 1.添加标题.图例.x轴信息和y轴信息,示例: %% 添加标题 clear; clc; close all; x = 0:0.1:2* ...
- python识别ppt文件格式 ——(专栏:基于python编写简单office阅卷程序③)
● 研二在读学生,非工科非计算机专业,故代码简陋初级勿喷,本文仅为记录和快乐分享. ○ 感谢肯定,感谢点赞收藏分享,转载请注明本页出处即可. ____Ⓙ即刻@王昭没有君 本文仅为笔者摸索总结-欢迎订正 ...
最新文章
- 编译器架构Compiler Architecture(下)
- java按行读取txt文件内容_对txt文件中的内容进行排序
- Chromium:安装depot_tools及获取Chromium源代码
- 【技术综述】人脸年龄估计研究现状
- python 批量创建变量_Python批量生成和调用变量
- sudo修改文件夹名字_修改mac os帐户的短名称和个人文件夹
- SAPGUI系统登录页面配置的SAProuter有什么用 1
- .mmp怎么打开查看?
- 本地运行vue.js项目,如何更改调试的默认端口?
- 讨物联网的隐私解决方案_2017年数据隐私日:日常隐私解决方案
- vb.net 同时给多个属性赋值_系统小技巧:充分用好文件的时间属性
- java 不生成文件下载_java 下载文件时怎么避免在服务器上生成文件
- 1、深入理解 Laravel Eloquent(一)——基本概念及用法
- 反编译获取线上任何微信小程序源码(转)
- Visio 不能使用方向键移动图形的解决办法
- JS中图片缓冲loading技术的实例代码
- 网际风全推数据接口_网际风千钧版 飞狐配套全推接口最新版(2013年5月10更新)...
- MPEG-2 数字视频技术参考指南 (7)—— ATSC数字电视标准
- 必应搜索结果跳转百度
- 【基础篇】SpringBoot 自定义 Banner
热门文章
- 信息差赚钱2020年怎么做?看完全部就会了!
- 【华人学者风采】李进 广州大学
- ipv4v6双栈技术_什么是IPv6双栈技术
- 结构光三维重建阶段性总结
- 计算机上怎么在表格输入分秒,“excel表格怎么输入角度“excel 表格中怎么输入分秒的符号...
- onenote登录显示服务器问题,onenote启动不了怎么回事 onenote为什么登录显示无法连接...
- 三阶魔方中心块调整公式及助记方法
- 微信音频silk导出多个mp3,合并成一个mp3,压缩大小
- R语言-处理缺失值的方法
- C++多线程03 Lambda表达式与caII once