GLUT之鼠标事件两点画线 4
1.使用工具
Code::Blocks
2.鼠标事件的声明
glutMouseFunc(mouseDown); // 鼠标回调
3.画点与画线
点
// 绘制点
void drawPoint(int x,int y)
{glColor3f(1.0f, 0.0f, 0.0f);glBegin(GL_POINTS);glVertex2i(x, y);glEnd();glFlush();
}
线
void drawLine(int x1, int y1, int x2, int y2)
{glColor3f(1.0f, 0.0f, 0.0f);glBegin(GL_LINES);glVertex2i(x1, y1);glVertex2i(x2, y2);glEnd();glFlush();
}
4.鼠标事件函数是固定的4个参数
// 提前声明的点,用于存放上一点
// 定义点结构体
struct Point
{int x;int y;
};// 定义一个起始点
Point startPoint = {0, 0};// 定义一个标志,因为第一次点点是无法连线的
bool isFirst = true;// ......// 处理鼠标
void mouseDown(int button,int state,int x,int y)
{if (state == GLUT_DOWN){if (button == GLUT_LEFT_BUTTON){// y的转换y = HEIGHT - y;drawPoint(x, y);// 如果是第一次,不画线,并赋值false关闭if (isFirst){isFirst = false;}else{drawLine(startPoint.x, startPoint.y, x, y);}// 存储该点startPoint.x = x;startPoint.y = y;}}
}
5.实现效果
6.完整代码
#include <windows.h>
#include <GL/glut.h>#define WIDTH 400
#define HEIGHT 400// 声明显示函数方法
void display(void);
// 声明处理鼠标方法
void mouseDown(int key, int state, int x, int y);
// 声明绘制点方法以及画线
void drawPoint(int x, int y);
void drawLine(int x1, int y1, int x2, int y2);// 定义点结构体
struct Point
{int x;int y;
};// 定义一个起始点
Point startPoint = {0, 0};// 定义一个标志,因为第一次点点是无法连线的
bool isFirst = true;// 主函数
int main(int argc, char** argv)
{glutInit(&argc, argv); // 初始化glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH); // 设置显示模式glutInitWindowSize(WIDTH,HEIGHT); // 设置窗口大小glutInitWindowPosition(400, 100); // 设置窗口位于屏幕位置glutCreateWindow("KUOKUO"); // 创建窗口glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 设置渲染状态glMatrixMode(GL_PROJECTION);gluOrtho2D(0, 400, 0, 400); // 矩阵变换glutDisplayFunc(display); // 显示回调glutMouseFunc(mouseDown); // 鼠标回调glutMainLoop();return EXIT_SUCCESS;
}void display(void)
{glClear(GL_COLOR_BUFFER_BIT);
}// 处理鼠标
void mouseDown(int button,int state,int x,int y)
{if (state == GLUT_DOWN){if (button == GLUT_LEFT_BUTTON){// y的转换y = HEIGHT - y;drawPoint(x, y);// 如果是第一次,不画线,并赋值false关闭if (isFirst){isFirst = false;}else{drawLine(startPoint.x, startPoint.y, x, y);}// 存储该点startPoint.x = x;startPoint.y = y;}}
}// 绘制点
void drawPoint(int x,int y)
{glColor3f(1.0f, 0.0f, 0.0f);glBegin(GL_POINTS);glVertex2i(x, y);glEnd();glFlush();
}void drawLine(int x1, int y1, int x2, int y2)
{glColor3f(1.0f, 0.0f, 0.0f);glBegin(GL_LINES);glVertex2i(x1, y1);glVertex2i(x2, y2);glEnd();glFlush();
}
O(∩_∩)O~~
GLUT之鼠标事件两点画线 4相关推荐
- 预测赢家破解-两点画线三点画线左侧交易法则
预测赢家破解-两点画线三点画线左侧交易法则 什么是预测赢家 哪里有破解版本 网站地址 什么是预测赢家 预测赢家炒股软件是国内首款以预测为主的股票分析决策软件.预测赢家炒股软件秉持左侧交易原理,通过大数 ...
- Glut处理鼠标事件:函数glutMouseFunc
检测鼠标单击 要想在OpenGL中处理鼠标事件非常的方便,GLUT已经为我们的注册好了函数,只要我们提供一个方法.使用函数glutMouseFunc,就可以帮我们注册我们的函数,这样当发生鼠标事件时就 ...
- 【转】Glut处理鼠标事件
http://blog.csdn.net/wuyong2k/article/details/7839973 目录(?)[-] 检测鼠标单击 检测动作 检测鼠标进入或离开窗口 应用 检测鼠标单击 要想在 ...
- gnuplot 两点画线
gnuplot中通过两点画虚线或者画直线通常用的是arrow nohead. 若想要从坐标0,0至坐标1,1画一条直线,则可以使用如下命令: set arrow nohead from 0,0 to ...
- python两点画线_在图像python matplotlib的两点之间画一条线
我有一个图像,我正在使用pyfits加载到2D数组中.我想在图像上画一条穿过两个像素的线,并用添加的新线保存它(不是绘图).在这之后,我想用不同的颜色画一条垂直于前一条线的线.使用matplotlib ...
- android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...
转载自:http://blog.csdn.net/rt77777/article/details/9186691 首先介绍一个类:GraphicsOverlay 这是一个在地图上绘制图形的overla ...
- matlab plot两点画线问题
今天用matlab画图时遇到两个问题 1.试图画出图像原点 plot(0,0),×,因为matlab的索引是从1开始的而不是0 plot(g(1,1)),x,这里g是一个读取的图片矩阵,这样画出来的点 ...
- openGL实现中点画线算法、DDA画线算法,Bresenham画线算法,并进行鼠标键盘的交互
首先设置变量用于进行鼠标交互和键盘交互: int m = 0; GLdouble m1 =0, m2 = 0; 1.实验入口主函数: //主函数 int main(int argc, char** a ...
- 模拟键盘鼠标事件有两种方法
实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...
最新文章
- TCO 2015 1A Hard.Revmatching(Hall定理)
- 牛逼了!一周内咸鱼疯转 3.6w 次,最终被所有大厂封杀!
- 一个好域名的作用和价值
- 设计模式-软件架构设计七大原则及开闭原则详解
- 斗罗大陆html5游戏在线玩,斗罗大陆H5在线玩
- 烙饼啊烙饼{转自ITEO
- 百度Android定位API使用指南
- 基于JAVA+SSH+MYSQL的鲜花订购系统
- 数控g71编程实例带图_数控车床g71编程实例带图 表面速度130m/min主轴
- Xubantu安装google 输入法以及You‘re currently running Fcitx with GUI, but fcitx-configtool couldn‘t be found
- 使用Arduino+L298N控制光驱两项四线步进电机
- QT学习Github地址,git使用记录
- 重新编译Spark2.4.0 Parcels包
- api存在csrf攻击吗_使用rest api防止单页应用上的csrf攻击
- 如何一次性删除PPT中所有动画效果?
- 使用Charles和iPhone进行微信小程序抓包详解
- 如何使用 Python 操作 .npy 文件?详细教程分享
- ubuntu 系统磁盘清理
- C++:N阶楼梯上楼问题
- 三维gis系统 开发