资源简介
在VC++环境中调用opengl函数,在opengl窗口中捕捉鼠标位置,并将坐标位置显示在窗口左下角
代码片段和文件信息
#pragma once
#include
#include
#include“glut.h“
//定义全局变量记录当前鼠标的位置信息
static int initWidth initHeight;
static int mousex mousey;
//鼠标移动回调函数
void mousemove(int x int y)
{
mousex = x;
mousey = glutGet(GLUT_WINDOW_HEIGHT) - y;
glutPostRedisplay();
}
/*-------------------------------------------------------------------*//*!
* \摘要 在窗口中指定位置指定大小的矩形内显示鼠标的当前位置
* \参数 x: 指定矩形的左小角的x坐标
y: 指定矩形的左小角的y坐标
width: 指定矩形的宽度
height: 指定矩形的高度
win_width: 窗口的宽度
win_height: 窗口的高度
* \返回值
* \标注 当前光标的坐标为:mousex mousey
*//*-------------------------------------------------------------------*/
void put_coordinate(float x float y float width float height float win_width float win_height)
{
GLfloat w_ratio = win_width / 330;
GLfloat h_ratio = win_height / 220;
//正投影
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-win_width/2 win_width/2 -win_height/2 win_height/2 1.0 -1.0);
glViewport(00widthheight);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(x-win_width/2 y-win_height/2+110*h_ratio 0); //将要显示的文字沿y轴上移110个单位(像素)
glScalef(w_ratio h_ratio 1); //将要显示的文字的xy坐标大小缩放至原来的0.1倍
//生成文字的固有大小为(330220)
glutStrokeCharacter(GLUT_STROKE_ROMAN 88); //输入要显示文字“X”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 58); //输入要显示文字“:”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex/100)); //计算当前位置的x坐标的百位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex%100)/10); //计算当前位置的x坐标的十位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex%10)); //计算当前位置的x坐标的个位数字
glLoadIdentity();
glTranslatef(x-win_width/2 y-win_height/2 0);
glScalef(w_ratio h_ratio 1); //将要显示的文字的xy坐标大小缩放至原来的0.1倍
glutStrokeCharacter(GLUT_STROKE_ROMAN 89); //输入要显示文字“Y”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 58); //输入要显示文字“:”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey/100)); //计算当前位置的y坐标的百位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey%100)/10); //计算当前位置的y坐标的十位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey%10)); //计算当前位置的y坐标的个位数字
glPopMatrix();
}
//将用户坐标映射到窗口坐标;当窗口的大小改变时,该函数会被调用
void ChangeSize(GLsizei w GLsizei h)
{
glViewport(00wh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//正投影
GLfloat aspectRatio = (GLfloat)w / (GLfloat)(h+1) ; //h+1防止除数为零
if(w<=h)
{
int windowWidth = 100;
int windowHeight = 100/aspectRatio;
glOrtho(-100.0 100.0 -windowHeight windowHeight 1.0 -1.0);
}
else
{
int windowWidth = 100*aspectRatio;
int windowHeight = 100;
glOrtho(-windowWidth windowWidth -100.0 100.0 1.0 -1.0);
}
}
void RenderScene( void )
{
//设置背景颜色
glClearColor( 0.0f 0.5f 0.0f 1.0f );
//用当前清除颜色清除
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 40960 2007-12-11 18:25 zuobiao\debug\zuobiao.exe
文件 169984 2007-06-19 13:02 zuobiao\glut.dll
文件 21440 2007-12-10 11:56 zuobiao\glut.h
文件 79654 2007-06-19 13:02 zuobiao\glut.lib
文件 169984 2007-06-19 12:58 zuobiao\glut32.dll
文件 79898 2007-06-19 12:58 zuobiao\glut32.lib
文件 4099 2007-12-11 18:25 zuobiao\Simple.cpp
文件 346 2007-12-11 16:03 zuobiao\zuobiao.sln
..A..H. 12288 2007-12-11 18:34 zuobiao\zuobiao.suo
文件 3970 2007-12-11 17:55 zuobiao\zuobiao.vcproj
文件 1413 2007-12-11 18:25 zuobiao\zuobiao.vcproj.ACTIONS.yyuan.user
目录 0 2009-04-22 12:32 zuobiao\debug
目录 0 2009-04-22 12:32 zuobiao
----------- --------- ---------- ----- ----
584036 13
相关资源
- VC++关于纹理特征提取的代码完整
- 基于mfcvc++6.0的图书馆管理系统
- 贝塞尔曲面 vc++ opengl
- 如何在VC++ 6.0创建RTX项目
- c++写的OpenGL程序透明金字塔有加上光
- VC++ 实现将本地文件通过HTTP上传到网
- VC++采用内存映射方式高效率读写大数
- 《C语言课程设计》 学生成绩管理系统
- VC++6.0无法打开工程解决办法
- VC++6.0实现读取硬盘唯一序列号源码和
- mfc安装全局钩子,显示窗口的标题
- OpenGl文字显示c++类
- 使用动态优先权的进程调度算法的模
- 读取串口数据并画实时曲线的VC++程序
- C++ 3D 五子棋 opengl
- VC++实现滑块皮肤 slider skin
- MFC 计算文件MD5码 VC++
- VC++垃圾文件清理工具源码.rar
- Win32窗口创建源码 by浅墨
- vc++6.0配置OpenCV
- http协议实现c++
- 使用OpenGL编写的三维曲线和曲面,V
- VC++ 多光谱影像处理
- 酒店管理系统 VC++ MFC实现)
- vc++ 浏览器 完整版
- 基于VC++的带通滤波器的设计与实现
- VC++查看鼠标在图像选点坐标程序
- vigenere密码加密解密算法实现软件Vc
- openGL四面体、立方体、正N棱柱、齿轮
- VC++6.0完美运行在win7和win10系统上
评论
共有 条评论