用鼠标点击获得位置信息以及来绘制自己的名字

 

//PointAndLine.c
#pragma comment(lib, "glut32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "opengl32.lib")
#include "GL/glut.h"
#include"iostream"
//鼠标事件
void myMouse(int _button, int _state, int _x, int _y) {
 //_button与_state是独立的, 根据需要进行组合
 switch (_button) {
 case GLUT_LEFT_BUTTON:
  std::cout<<"LEFT <= mouse button is pressed, "; break;
 case GLUT_MIDDLE_BUTTON:
  std::cout<<"MIDD || mouse button is pressed, "; break;
 case GLUT_RIGHT_BUTTON:
  std::cout<<"RIGH => mouse button is pressed, "; break;
 }
 
 if (_state)
  std::cout<<"UP   at ["<<_x<<","<<_y<<"]\n";
 else
  std::cout<<"DOWN at ["<<_x<<","<<_y<<"]\n";
}

//初始化窗口
void SetupRC(void)
{
// 设置窗口背景颜色为黑色
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
}
void ChangeSize(int w, int h)
{
if(h == 0) h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)

glOrtho (-100.0f, 100.0f, -100.0f*h/w, 100.0f*h/w, -100.0f, 100.0f);
else
glOrtho (-100.0f*w/h, 100.0f*w/h, -100.0f, 100.0f, -100.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// 在窗口中绘制图形
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);

//设置点的大小以及线宽
glPointSize(5);
glLineWidth(5);

//马
     glBegin(GL_LINE_STRIP);
     glColor3f(1.0,1.0,0.0);
     glVertex2f(-40.5f,20.0f);
     glVertex2f(-20.0f,20.0f);
     glVertex2f(-20.0f,8.0f);
     glEnd();

     glBegin(GL_LINE_STRIP);
     glColor3f(1.0,1.0,0.0);
     glVertex2f(-30.0f,16.0f);
     glVertex2f(-30.0f,10.0f);
     glVertex2f(-16.0f,10.0f);
     glVertex2f(-20.0f,-15.0f);
     glEnd();

     glBegin(GL_LINES);
     glColor3f(1.0,1.0,0.0);
     glVertex2f(-35.0f,0.0f);
     glVertex2f(-20.0f,0.0f);

     glEnd();
//乐
     glBegin(GL_LINE_STRIP);
     glColor3f(1.0,1.0,0.0);
     glVertex2f(34.0f,22.0f);
     glVertex2f(20.0f,20.0f);
     glVertex2f(20.0f,9.0f);
     glVertex2f(34.0f,9.0f);
     glEnd();

     glBegin(GL_LINE_STRIP); 
     glColor3f(1.0,1.0,0.0);
     glVertex2f(29.0f,19.0f);
     glVertex2f(29.0f,-15.0f);
     glVertex2f(26.0f,-13.0f);
     glEnd();

     glBegin(GL_LINES);
     glColor3f(1.0,1.0,0.0);
     glVertex2f(20.0f,0.0f);
     glVertex2f(10.0f,-5.0f);

    glEnd();

    glBegin(GL_LINES); 
    glColor3f(1.0,1.0,0.0);
    glVertex2f(30.0f,0.0f);
    glVertex2f(37.0f,-5.0f);

    glEnd();

glPopMatrix();
glutSwapBuffers(); // 刷新命令缓冲区
}


int main(int argc, char* argv[])
{

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB );
glutCreateWindow("名字");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
SetupRC();
//注册鼠标事件处理函数         <==========NEW!!!
glutMouseFunc(myMouse);
glutMainLoop();
return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值