博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用键盘实现橡皮筋技术
阅读量:6482 次
发布时间:2019-06-23

本文共 1939 字,大约阅读时间需要 6 分钟。

键盘输入注册函数:glutKeyboardFunc(Key);它指定了程序在运行状态时,按下键盘上的任意一个键都会调用Ker函数:

void Key(unsigned char key,int x,int ,y);参数key的取值是一个字符值或对应的ASCLL编码,而(x,y)则是按下键盘时窗口中当前屏幕光标相对于

窗口左上角的位置坐标。

代码如下:

#include"gl/glut.h"int ipointnum=0;//已确定点的数目int x1=0,x2=0,y1=0,y2=0;//确定的点坐标int winWidth=400,winHeight=300;//窗口的宽度和高度void Initial(void){    glClearColor(1.0f,1.0f,1.0f,1.0f);//设置窗口的背景颜色}void ChangeSize(int w,int h){    winWidth=w;winHeight=h;//保存当前窗口的大小    glViewport(0,0,w,h);//指定窗口显示区域    glMatrixMode(GL_PROJECTION);//指定设置投影参数    glLoadIdentity();//调用单位矩阵,去掉以前的投影参数设置    gluOrtho2D(0.0,winWidth,0.0,winHeight);//设置投影参数}void Display(void){    glClear(GL_COLOR_BUFFER_BIT);//用当前背景色填充窗口    glColor3f(1.0f,0.0f,0.0f);//指定当前的绘图颜色    if(ipointnum>=1)    {        glBegin(GL_LINES);//绘制直线段        glVertex2i(x1,y1);        glVertex2i(x2,y2);        glEnd();    }    glutSwapBuffers();//交换缓冲区}void Key(unsigned char key,int x,int y){    switch(key)    {    case 'p':        if(ipointnum==0||ipointnum==2)        {            ipointnum=1;            x1=x;y1=winHeight-y;//确定直线段的第一个端点        }        else        {            ipointnum=2;            x2=x;y2=winHeight-y;//确定直线段的第二个端点            glutPostRedisplay();//指定窗口重新绘制        }        break;    default:break;    }}void PassiveMouseMove(GLint xMouse,GLint yMouse){    if(ipointnum==1)    {       x2=xMouse;       y2=winHeight-yMouse;//将当前鼠标位置指定为直线的未固定端点       glutPostRedisplay();    }}int main(int argc,char *argv[]){    glutInit(&argc,argv);    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);//使用双缓存及RGB模型    glutInitWindowSize(400,300);//指定窗口的大小    glutInitWindowPosition(100,100);//指定窗口在屏幕上的位置    glutCreateWindow("橡皮筋技术");    glutDisplayFunc(Display);    glutReshapeFunc(ChangeSize);//指定窗口再整形回调函数    glutKeyboardFunc(Key);//指定键盘响应函数    glutPassiveMotionFunc(PassiveMouseMove);//指定鼠标移动响应函数    Initial();    glutMainLoop();//启动主GLUT时间处理循环    return 0;}
View Code

 

转载于:https://www.cnblogs.com/acm-jing/p/4374040.html

你可能感兴趣的文章
鱼C记事本V1.0(下)- 零基础入门学习Delphi28
查看>>
百练 2742 统计字符数 解题报告
查看>>
Ubuntu搜狗输入法候选词乱码
查看>>
js中回调函数写法
查看>>
React native android 最常见的10个问题
查看>>
数据结构和算法
查看>>
.Net 项目代码风格要求
查看>>
[pat]1045 Favorite Color Stripe
查看>>
Immutable学习及 React 中的实践
查看>>
【转】性能测试步骤
查看>>
OSI与TCP/IP各层的结构与功能,都有哪些协议
查看>>
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>
算法 (二分查找算法)
查看>>
java Date 当天时间戳处理
查看>>
Python~迭代
查看>>
linux常用命令-关机、重启
查看>>
css布局 - 九宫格布局的方法汇总(更新中...)
查看>>
iOS开发之调用系统设置
查看>>
解决wampserver 服务无法启动
查看>>