用opengl做了个小时钟,明天开始做进阶功能给它打光。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;
using Tao.FreeGlut;
namespace homework3
{
public partial class Form1 : Form
{
double second_rot = 0.0;
double minit_rot = 0.0;
double hour_rot = 0.0;
DateTime mydatetime = new DateTime();
public Form1()
{
InitializeComponent();
this.simpleOpenGlControl1.InitializeContexts();
Glut.glutInit();
}
private void setVolume()
{
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
double aspect = (double)this.simpleOpenGlControl1.Size.Width / (double)this.simpleOpenGlControl1.Size.Height;
Glu.gluPerspective(45.0, aspect, 0.1, 100.0);
Gl.glViewport(0, 0, this.simpleOpenGlControl1.Width, this.simpleOpenGlControl1.Height);
}
private void myInit()
{
Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
private void simpleOpenGlControl1_Load(object sender, EventArgs e)
{
myInit();
setVolume();
mydatetime = DateTime.Now;
second_rot = mydatetime.Second * 6.0;
minit_rot = mydatetime.Minute * 6.0;
hour_rot = mydatetime.Hour * 30+mydatetime.Minute*0.5;
}
private void simpleOpenGlControl1_Paint(object sender, PaintEventArgs e)
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Glu.gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
Gl.glColor3ub(0, 255, 0);
Glut.glutSolidTorus(0.15, 1.5, 40, 40);
Gl.glColor3ub(255, 255, 0);
Glut.glutSolidSphere(1.35, 40, 40);
Gl.glScaled(1.0, 1.0, 0.1);
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(0.0, 1.25, 0.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25*Math.Sin(30*Math.PI/180.0), 1.25*Math.Cos(30*Math.PI/180.0 ),0.0);
Gl.glRotated(30.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(60 * Math.PI / 180.0), 1.25 * Math.Cos(60 * Math.PI / 180.0), 0.0);
Gl.glRotated(60.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25, 0.0, 0.0);
Gl.glRotated(90.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(120 * Math.PI / 180.0), 1.25 * Math.Cos(120 * Math.PI / 180.0), 0.0);
Gl.glRotated(120.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(150 * Math.PI / 180.0), 1.25 * Math.Cos(150 * Math.PI / 180.0), 0.0);
Gl.glRotated(150.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(0, -1.25 , 0.0);
Gl.glRotated(180.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(210 * Math.PI / 180.0), 1.25 * Math.Cos(210 * Math.PI / 180.0), 0.0);
Gl.glRotated(210.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(240 * Math.PI / 180.0), 1.25 * Math.Cos(240 * Math.PI / 180.0), 0.0);
Gl.glRotated(240.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(270 * Math.PI / 180.0), 1.25 * Math.Cos(270 * Math.PI / 180.0), 0.0);
Gl.glRotated(270.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(300 * Math.PI / 180.0), 1.25 * Math.Cos(300 * Math.PI / 180.0), 0.0);
Gl.glRotated(300.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 0);
Gl.glTranslated(-1.25 * Math.Sin(330 * Math.PI / 180.0), 1.25 * Math.Cos(330 * Math.PI / 180.0), 0.0);
Gl.glRotated(330.0, 0.0, 0.0, 1.0);
Gl.glScaled(0.1, 1.0, 0.01);
Glut.glutSolidCube(0.3);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(0, 0, 255);
Gl.glRotated(-hour_rot, 0.0, 0.0, 1.0);
Gl.glTranslated(0.0, 0.3, 0.0);
Gl.glScaled(0.1, 1.0, 0.05);
Glut.glutSolidCube(1.0);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(0, 0, 255);
Gl.glRotated(-minit_rot, 0.0, 0.0, 1.0);
Gl.glTranslated(0.0,0.45 , 0.0);
Gl.glScaled(0.1, 1.8, 0.05);
Glut.glutSolidCube(0.8);
Gl.glPopMatrix();
Gl.glPushMatrix();
Gl.glColor3ub(255, 0, 255);
Gl.glRotated(-second_rot, 0.0, 0.0, 1.0);
Gl.glTranslated(0.0,0.5, 0.0);
Gl.glScaled(0.05, 2.4, 0.05);
Glut.glutSolidCube(0.6);
Gl.glPopMatrix();
}
private void timer1_Tick(object sender, EventArgs e)
{
second_rot += 6.0;
if (second_rot % 360 == 0)
{
minit_rot += 6.0;
hour_rot += 0.5;
}
this.simpleOpenGlControl1.Refresh();
}
}
}
分享到:
相关推荐
用VB语言编写的小时钟,用一个窗体实现显示当前的时间及滚动时间条
超逗的动态小人时钟,找了很久
一个用windows双缓存绘画的简易小时钟。
C#编写的小时钟,本人精心制作出来的。。。。。。。。。
WPF仿WEB QQ小时钟源码 功能介绍: 使用WPF制作的小时钟,现实2个刻度
时钟 flash swf swf格式的时钟 flash小时钟
java小时钟 可走可暂停
4.5 小时钟--小时钟
合适新手研究,欢迎下载 C语言 小时钟 小闹钟 新手项目
用api写的C++小时钟的代码
flash编写的小时钟,插入在ppt中可以方便对时间的掌握 flash编写的小时钟,插入在ppt中可以方便对时间的掌握 flash编写的小时钟,插入在ppt中可以方便对时间的掌握 flash编写的小时钟,插入在ppt中可以方便对时间的...
牟挚您箔廉耻戏屑戈莱呻拨岿骗垂磊且仗趣琳会坡越侵州靠靶靛掉照亏氨JAVA线程程序 设计(小时钟)实验报告(附完整代码)拖惫宦税今扎光订峻短莹签康藉呆堵誓热嚎嘿执庄 潜檬婉放驼惠赠咬柄菜酥获叉肖椭泥成牡汪追碎泉除...
这是一个始终保持在最前端、一直置顶的小时钟,可以高于播放器的置顶权限哦~
delphi 编写的桌面数字小时钟,可以设置闹钟,颜色,透明度等
用delphi语言编写的简易小时钟,该资源包含所有代码和文件,可以直接运行使用,代码里有很规范和详细的注释,易学易懂~~~~而且该时钟是为读者实现了根本技术,其他更美化的功能读者可以自己添加,拓展性大。...
C# 小时钟
这是java种用JWidow写一个可以在桌面上拖动的小时钟
有很多初学Python的小伙伴们都觉得Python比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到...课题一:Python开发指南之程序员计时小时钟
C++语言编写的指针式小时钟,钟表小程序,用函数(Visual studio C++源代码程序)