使用鼠标左键点击绘制一个矩形 右键清屏 源代码
2013-10-21 18:21
357 查看
#include<windows.h>
#include <gl/glut.h>
#include <iostream>
using namespace std;
static GLint corner[2]={0,0};
static GLint numCorners = 0;
const GLint screenWidth = 640;
const GLint screenHeight = 480;
void myDisplay(void);
void myInit(void);
void myMouse(GLint button,GLint state, GLint x , GLint y);
void moveTo(GLint x, GLint y);
void LineTo(GLint x, GLint y);
int main(int argc, char ** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(screenWidth,screenHeight);
glutInitWindowPosition(100,150);
glutCreateWindow("Drawing with mouse");
glutDisplayFunc(myDisplay);
myInit();
glutMouseFunc(myMouse);
glutMainLoop();
return 0;
}
void myMouse(GLint button ,GLint state, GLint x, GLint y){
if (state == GLUT_DOWN)
{
if (button == GLUT_LEFT_BUTTON)
{
if (numCorners==0)
{
moveTo(x, screenHeight-y);
glBegin(GL_POINTS);
glVertex2d(x, screenHeight-y);
glEnd();
++numCorners;
cout<<"numCorners = 0"<<" "<<numCorners<<endl;
}
else if (numCorners == 1)
{
glRecti(corner[0],corner[1],x,screenHeight-y);
numCorners = 0;
cout<<"numCorners = 1"<<" "<<numCorners<<endl;
}
glFlush();
}
if (button == GLUT_RIGHT_BUTTON)
{
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
}
}
void moveTo(GLint x, GLint y){
corner[0] = x;
corner[1] = y;
}
void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.0f);
}
void myInit(void){
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(0.0f,0.0f,0.0f);
glPointSize(2.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)screenWidth,0.0,(GLdouble)screenHeight);
}
#include <gl/glut.h>
#include <iostream>
using namespace std;
static GLint corner[2]={0,0};
static GLint numCorners = 0;
const GLint screenWidth = 640;
const GLint screenHeight = 480;
void myDisplay(void);
void myInit(void);
void myMouse(GLint button,GLint state, GLint x , GLint y);
void moveTo(GLint x, GLint y);
void LineTo(GLint x, GLint y);
int main(int argc, char ** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(screenWidth,screenHeight);
glutInitWindowPosition(100,150);
glutCreateWindow("Drawing with mouse");
glutDisplayFunc(myDisplay);
myInit();
glutMouseFunc(myMouse);
glutMainLoop();
return 0;
}
void myMouse(GLint button ,GLint state, GLint x, GLint y){
if (state == GLUT_DOWN)
{
if (button == GLUT_LEFT_BUTTON)
{
if (numCorners==0)
{
moveTo(x, screenHeight-y);
glBegin(GL_POINTS);
glVertex2d(x, screenHeight-y);
glEnd();
++numCorners;
cout<<"numCorners = 0"<<" "<<numCorners<<endl;
}
else if (numCorners == 1)
{
glRecti(corner[0],corner[1],x,screenHeight-y);
numCorners = 0;
cout<<"numCorners = 1"<<" "<<numCorners<<endl;
}
glFlush();
}
if (button == GLUT_RIGHT_BUTTON)
{
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
}
}
void moveTo(GLint x, GLint y){
corner[0] = x;
corner[1] = y;
}
void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.0f);
}
void myInit(void){
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(0.0f,0.0f,0.0f);
glPointSize(2.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)screenWidth,0.0,(GLdouble)screenHeight);
}
相关文章推荐
- 使用OpenLayers实现一个在鼠标点击处添加标记的效果
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- Android 如何使用shape绘制只有一个圆角的矩形
- 使用windows打开一个文本时,鼠标右键找不到notepad
- 在VC中,使用OpenGL绘制一个矩形、三角形、三个点和三条直线,由直线组成新的三角形
- 《GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形》的正确版本及源代码
- C# winform datagridview中如何实现鼠标右键点击一行数据出现一个带有删除的菜单,并能执行删除操作?
- 如何使用CSS绘制一个响应式的矩形
- 创建一个大小为400*400的三通道的RGB图像。将它的全部元素置0.使用指针算法将以(100,100)与(300,300)为项点绘制一个绿色的矩形。
- 错误:在使用自己绘制控件时,发现有些地方鼠标点击时没有效果
- 如何在网页中禁止使用鼠标右键?如何禁止鼠标点击?
- 编写一个windows应用程序,要求在窗口的用户区中绘制一个圆 ,当单击左键时,该圆放大;单击右键时,该圆缩小;按下ctrl键时的同时鼠标移动,则该圆会随鼠标移动而移动
- 使用鼠标绘制矩形
- 2.9 opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- 我创建了一个托盘图标,可以正常使用,点击右键打开菜单。问题是如果点击右键后不选择其中一个菜单项进行操作的话,它就总不消失。
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- 使用JavaScript和DIV实现WebGIS中的鼠标拖动绘制矩形