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相关推荐

  1. 预测赢家破解-两点画线三点画线左侧交易法则

    预测赢家破解-两点画线三点画线左侧交易法则 什么是预测赢家 哪里有破解版本 网站地址 什么是预测赢家 预测赢家炒股软件是国内首款以预测为主的股票分析决策软件.预测赢家炒股软件秉持左侧交易原理,通过大数 ...

  2. Glut处理鼠标事件:函数glutMouseFunc

    检测鼠标单击 要想在OpenGL中处理鼠标事件非常的方便,GLUT已经为我们的注册好了函数,只要我们提供一个方法.使用函数glutMouseFunc,就可以帮我们注册我们的函数,这样当发生鼠标事件时就 ...

  3. 【转】Glut处理鼠标事件

    http://blog.csdn.net/wuyong2k/article/details/7839973 目录(?)[-] 检测鼠标单击 检测动作 检测鼠标进入或离开窗口 应用 检测鼠标单击 要想在 ...

  4. gnuplot 两点画线

    gnuplot中通过两点画虚线或者画直线通常用的是arrow nohead. 若想要从坐标0,0至坐标1,1画一条直线,则可以使用如下命令: set arrow nohead from 0,0 to ...

  5. python两点画线_在图像python matplotlib的两点之间画一条线

    我有一个图像,我正在使用pyfits加载到2D数组中.我想在图像上画一条穿过两个像素的线,并用添加的新线保存它(不是绘图).在这之后,我想用不同的颜色画一条垂直于前一条线的线.使用matplotlib ...

  6. android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...

    转载自:http://blog.csdn.net/rt77777/article/details/9186691 首先介绍一个类:GraphicsOverlay 这是一个在地图上绘制图形的overla ...

  7. matlab plot两点画线问题

    今天用matlab画图时遇到两个问题 1.试图画出图像原点 plot(0,0),×,因为matlab的索引是从1开始的而不是0 plot(g(1,1)),x,这里g是一个读取的图片矩阵,这样画出来的点 ...

  8. openGL实现中点画线算法、DDA画线算法,Bresenham画线算法,并进行鼠标键盘的交互

    首先设置变量用于进行鼠标交互和键盘交互: int m = 0; GLdouble m1 =0, m2 = 0; 1.实验入口主函数: //主函数 int main(int argc, char** a ...

  9. 模拟键盘鼠标事件有两种方法

    实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...

最新文章

  1. TCO 2015 1A Hard.Revmatching(Hall定理)
  2. 牛逼了!一周内咸鱼疯转 3.6w 次,最终被所有大厂封杀!
  3. 一个好域名的作用和价值
  4. 设计模式-软件架构设计七大原则及开闭原则详解
  5. 斗罗大陆html5游戏在线玩,斗罗大陆H5在线玩
  6. 烙饼啊烙饼{转自ITEO
  7. 百度Android定位API使用指南
  8. 基于JAVA+SSH+MYSQL的鲜花订购系统
  9. 数控g71编程实例带图_数控车床g71编程实例带图 表面速度130m/min主轴
  10. Xubantu安装google 输入法以及You‘re currently running Fcitx with GUI, but fcitx-configtool couldn‘t be found
  11. 使用Arduino+L298N控制光驱两项四线步进电机
  12. QT学习Github地址,git使用记录
  13. 重新编译Spark2.4.0 Parcels包
  14. api存在csrf攻击吗_使用rest api防止单页应用上的csrf攻击
  15. 如何一次性删除PPT中所有动画效果?
  16. 使用Charles和iPhone进行微信小程序抓包详解
  17. 如何使用 Python 操作 .npy 文件?详细教程分享
  18. ubuntu 系统磁盘清理
  19. C++:N阶楼梯上楼问题
  20. 三维gis系统 开发

热门文章

  1. 京东618大促,全店快递如何批量打印
  2. source insight 4.0 使用make命令编译
  3. 分享 | CADD之分子动力学的简介(上篇)
  4. 中国丹参市场经营模式与盈利预测报告(新版)2021-2026年
  5. Java的基础语法(二)
  6. 台式电脑开启休眠模式(win10)
  7. IP65等IP防尘防水等级测试标准IEC60529测试内容详解
  8. 批处理一键打开Windows远程桌面
  9. UE4学习日记:实现自动开关门和通过鼠标按键控制开关门
  10. MNIST数据集手写数字分类