OpenGL数据点折线与直方图

来源:互联网 发布:禁止局域网上网软件 编辑:程序博客网 时间:2024/05/17 05:10

效果图:

#include<gl/glut.h>
GLsizei winwidth=1200,winheight=600; //初始化显示屏尺寸
GLint xraster=25,yraster=150; //初始化光栅位置
GLubyte label[36]={'J','A','N', 'F','E','B', 'M','A','R', 'A','P','R', 'M','A','Y', 'J','U','N', 'J','U','L', 'A','U','G', 'S','E','P', 'O','C','T', 'N','O','R', 'D','E','C'};
GLint datavalue[12]={420, 342, 324, 310, 262, 185, 190, 196, 217, 240, 312, 438};//利用数组储存坐
void init()
{
glClearColor(1.0,1.0,1.0,0.0);//背景色为白色
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-300.0,300.0,-300.0,300.0);
glMatrixMode(GL_MODELVIEW);
}
void linegraph() //绘制折线图
{
GLint month ,k;
GLint x=30; //初始化表格中X的坐标
glColor3f(0.0,0.0,1.0);//绘制一条蓝色的线
glBegin(GL_LINE_STRIP);
for(k=0;k<12;k++)//利用for循环逐个输出坐标点绘制折线图
glVertex2i(x+k*50,datavalue[k]);
glEnd();
glColor3f(1.0,0.0,0.0);//绘制颜色为红色
for(k=0;k<12;k++)//输出标记点
{
glRasterPos2i(x+k*50,datavalue[k]-4);
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'*');
}
glColor3f(0.0,0.0,0.0);
xraster=20;
for(month=0;month<12;month++)
{
glRasterPos2i(xraster,yraster);
for(k=3*month;k<3*month+3;k++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12,label[k]);//输出月份
}
xraster+=50;
}
}
void winreshapefcn(GLint winwidth,GLint winheight)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,GLdouble(winwidth),0.0,GLdouble(winheight));
glClear(GL_COLOR_BUFFER_BIT);
}
void barChart()
{
GLint month,k;
//glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
for(k=0;k<12;k++)
{
glRecti(20+k*50,165,40+k*50,datavalue[k]);
}
glColor3f(0.0,0.0,0.0);
xraster=20;
for(month=0;month<12;month++)
{
glRasterPos2i(xraster,yraster);
for(k=3*month;k<3*month+3;k++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12,label[k]);
}
xraster+=50;
}
}
void displayfcn(void)
{
glClear(GL_COLOR_BUFFER_BIT);//清空屏幕
glViewport(50,0,600,600);
linegraph();
glViewport(600,0,600,600);
barChart();
glFlush();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize(winwidth,winheight);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("666");
init();
glutDisplayFunc(displayfcn);
glutReshapeFunc(winreshapefcn);
glutMainLoop();
}

资源下载地址:http://download.csdn.net/detail/qq_28597703/8959533

1 0