简单Opengl时钟时钟源代码 可以运行

合集下载

模拟时钟源代码

模拟时钟源代码

void CTest13_4Doc::m_TickAdd(){this->m_sec ++;if(this->m_sec == 60){this->m_min ++;this->m_sec = 0;}if(this->m_min == 60){this->m_hour ++;this->m_min = 0;}if(this->m_hour>= 12){this->m_hour -= 12;}}void CTest13_4Doc::M_MoveClockHands(){intpx, py;double degree;//设置秒针的终点坐标degree = this->m_sec * 6 - 90;px = cos((degree/180.0)*PI)* sLen + 250;py = sin((degree/180)*PI)* sLen + 250;this->m_secEndPoint.x = px;this->m_secEndPoint.y= py;//设置分针的终点坐标degree = this->m_min * 6 - 90;px = cos((degree/180.0)*PI) * mLen + 250;py = sin((degree/180)*PI) * mLen + 250;this->m_minEndPoint.x = px;this->m_minEndPoint.y = py;//设置时针的终点坐标degree = this->m_hour * 30 - 90;px = cos((degree/180.0)*PI) * hLen + 250;py = sin((degree/180.0)*PI) * hLen + 250;this->m_hourEndPoint.x = px;this->m_hourEndPoint.y = py;}BOOL CTest13_4Doc::OnNewDocument(){if (!CDocument::OnNewDocument())return FALSE;// TODO: add reinitialization code herethis->m_Rect = CRect(100,100,400,400);this->m_org = this->m_Rect.CenterPoint();this->m_centerRect = CRect(m_Rect.TopLeft().x+140, m_Rect.TopLeft().y+140,m_Rect.BottomRight().x-140, m_Rect.BottomRight().y-140);CTime time = CTime::GetCurrentTime();this->m_hour = time.GetHour();this->m_min = time.GetMinute();this->m_sec = time.GetSecond();//设置时钟指针的终点位置// this->M_MoveClockHands();//设置指针的长度hLen = 80;mLen = 100;sLen = 120;// (SDI documents will reuse this document)return TRUE;}void CTest13_4View::OnDraw(CDC* pDC){CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);SetTimer(0, 1000, NULL);CPen *oldPen, *cPen;CBrush *oldBrush, *cBrush;//画出大的圆cPen = new CPen(PS_SOLID, 3, RGB(255,132,123));cBrush = new CBrush(RGB(123,132,123));oldPen = pDC->SelectObject(cPen);oldBrush = pDC->SelectObject(cBrush);pDC->Ellipse(pDoc->m_Rect);pDC->SelectObject(oldPen);pDC->SelectObject(oldBrush);//画出中心的一个圆cBrush = new CBrush(RGB(255,132,123));pDC->SelectObject(cBrush);pDC->Ellipse(pDoc->m_centerRect);pDC->SelectObject(oldBrush);//得到矩形的另个点,画出四个分线cPen = new CPen(PS_SOLID, 2, RGB(255,222,123));oldPen = pDC->SelectObject(cPen);CPointtl = pDoc->m_Rect.TopLeft();CPointbr = pDoc->m_Rect.BottomRight();pDC->MoveTo((br.x+tl.x)/2, tl.y);pDC->LineTo((br.x+tl.x)/2, tl.y+20);pDC->MoveTo((br.x+tl.x)/2, br.y);pDC->LineTo((br.x+tl.x)/2, br.y-20);pDC->MoveTo(tl.x, (br.y+tl.y)/2);pDC->LineTo(tl.x+20, (br.y+tl.y)/2);pDC->MoveTo(br.x, (br.y+tl.y)/2);pDC->LineTo(br.x-20, (br.y+tl.y)/2);pDC->SelectObject(oldPen);//画出刻度pDC->MoveTo(326,122);pDC->LineTo(320,134);pDC->MoveTo(377,175);pDC->LineTo(365,183);////pDC->MoveTo(377,323);pDC->LineTo(365,317);pDC->MoveTo(326,378);pDC->LineTo(320,365);////pDC->MoveTo(175,377);pDC->LineTo(183,365);pDC->MoveTo(122,326);pDC->LineTo(134,320);////pDC->MoveTo(122,177);pDC->LineTo(134,183);pDC->MoveTo(177,122);pDC->LineTo(183,134);//画出三个时针、分针、秒针//hourpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_hourEndPoint);//minutinpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_minEndPoint);//secondpDC->MoveTo(pDoc->m_org);pDC->LineTo(pDoc->m_secEndPoint);// TODO: add draw code for native data here}void CTest13_4View::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call default CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDoc->m_TickAdd();pDoc->M_MoveClockHands();this->InvalidateRect(CRect(130,130,370,370));CView::OnTimer(nIDEvent);}void CTest13_4View::OnLButtonDblClk(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default CTest13_4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);changeTimectime;if(ctime.DoModal() == IDOK){pDoc->m_hour = ctime.m_Hour;pDoc->m_min = ctime.m_Min;pDoc->m_sec = ctime.m_Sec;//改变系统时间if(ctime.m_ChangeSysTime){CTime time = CTime::GetCurrentTime();SYSTEMTIME tm;tm.wYear = time.GetYear();tm.wDay = time.GetDay();tm.wMonth =time.GetMonth();tm.wHour = ctime.m_Hour;tm.wMinute = ctime.m_Min;tm.wSecond = ctime.m_Sec;tm.wMilliseconds = 0;SetLocalTime(&tm);}pDoc->M_MoveClockHands();}CView::OnLButtonDblClk(nFlags, point);}大体上就用到了上面几个函数,用到的变量自己看着加吧!。

全球时钟小工具的程序设计及代码示例

全球时钟小工具的程序设计及代码示例

全球时钟小工具的程序设计及代码示例全球时钟小工具是一个使用计算机程序编写的应用程序,它可以显示世界各地的时间,帮助人们在跨时区的环境中轻松管理时间安排和沟通。

本文将介绍如何进行全球时钟小工具的程序设计,并提供代码示例。

1. 程序设计思路在设计全球时钟小工具时,需要考虑以下几个方面:1.1 用户界面设计要设计一个简洁美观的用户界面,可以使用图形用户界面(GUI)或者命令行界面(CLI)来显示各地时间。

界面应包含一个时钟显示区域,用于显示不同城市的时间。

1.2 时间数据来源为了获取各个城市的时间数据,可以使用国际标准时间(UTC)作为基准,然后通过与每个城市的时区进行相应的偏移来计算。

1.3 实时更新全球时钟小工具应该能够在后台实时更新时间,以确保显示的时间准确无误。

可以使用定时器或者轮询的方式来更新时间数据。

2. 代码示例下面是一个基于Python语言实现的全球时钟小工具的代码示例:```pythonimport datetime# 定义城市与时区偏移的字典city_timezones = {"New York": -5,"London": 0,"Beijing": +8,"Tokyo": +9}# 获取当前时间并计算各个城市的时间current_time = datetime.datetime.utcnow()for city, timezone_offset in city_timezones.items():city_time = current_time + datetime.timedelta(hours=timezone_offset) print(f"{city}: {city_time.strftime('%Y-%m-%d %H:%M:%S')}")```上述代码中,通过定义一个字典 `city_timezones` ,将各个城市与其对应的时区偏移关联起来。

计算机图形学 MFC VC++6.0制作的简单时钟源代码

计算机图形学 MFC VC++6.0制作的简单时钟源代码
{
// TODO: Add your command handler code here
Timer=1;
SetTimer(1,100,NULL);
}
void CMFCFrame1View::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
{
// dቤተ መጻሕፍቲ ባይዱfault preparation
return DoPreparePrinting(pInfo);
}
void CMFCFrame1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
// CMFCFrame1View drawing
/////////////////////////////////////////////////////////////////////////////
// CMFCFrame1View printing
BOOL CMFCFrame1View::OnPreparePrinting(CPrintInfo* pInfo)
// CMFCFrame1View
IMPLEMENT_DYNCREATE(CMFCFrame1View, CView)
BEGIN_MESSAGE_MAP(CMFCFrame1View, CView)
//{{AFX_MSG_MAP(CMFCFrame1View)
ON_WM_CREATE()

电子时钟工具的程序设计及代码示例

电子时钟工具的程序设计及代码示例

电子时钟工具的程序设计及代码示例为满足现代生活的需求,电子时钟成为人们生活中的常见工具。

除了具备实时显示时间的功能外,电子时钟还可以根据用户需求进行各种定制,如显示日期、倒计时、闹钟等功能。

本文将探讨电子时钟的程序设计方法,并提供一个简单的代码示例。

一、程序设计方法在进行电子时钟的程序设计前,我们需要确定以下几个关键因素:1. 使用的编程语言:根据实际情况选择合适的编程语言,如C++、Java、Python等。

2. GUI框架:确定使用什么图形界面框架,如Qt、Tkinter等。

3. 实时更新:确定时间的实时更新方式,可以利用计时器、循环等方式进行时间更新。

4. 用户交互:考虑用户是否需要与电子时钟进行交互,如设置闹钟、选择日期等。

二、代码示例以下是一个基于Python和Tkinter的电子时钟代码示例,代码注释中详细说明了每个函数的功能和实现方法:```pythonimport tkinter as tkfrom datetime import datetimedef update_time():# 获取当前时间current_time = datetime.now().strftime("%H:%M:%S")# 更新时间标签time_label.config(text=current_time)# 每隔1秒更新一次时间time_label.after(1000, update_time)# 创建窗口window = ()window.title("电子时钟")# 创建时间标签time_label = bel(window, font=("Arial", 100), bg="white") time_label.pack(pady=50)# 更新时间update_time()# 运行窗口主循环window.mainloop()```以上代码创建了一个简单的窗口,使用标签实时显示当前时间。

多功能时钟C源代码

多功能时钟C源代码

void start();//启动 IIC 总线 void stop();//主机发送停止信号 void respons();//从器件应答 void write_byte(uchar date);//向芯片写入一个字节 uchar read_byte();//从芯片读出一个字节 uchar read(uchar add);//从芯片指定地址中读出一个字节 void write(uchar add,uchar date);//向芯片指定地址中写出一个字节; bit Init_DS18B20();//18b20 初始化 uchar Read_DS18B20();//读取一个字节 void Write_DS18B20(uchar date);//写入一个字节 uint Get_tem();//读取温度 void Temperature();//转换所读取到的温度 void displaytemperature();//显示温度的函数 void keyscan();////调整时间的函数 void clock();//设定闹铃功能函数 void display(uchar x,uchar y,uchar z);//显示函数 /*~~~~~~~~~~~子函数~~~~~~~~~~~*/ //微秒级延时函数 void delayus(uchar tt) {
hou--; keysound();
while(!timebelow); for(i=10;i>0;i--){display(hou,min,0x00);} } } if(flag2==1)//调整分钟 { if(timeabove==0) { delayms(10); if(timeabove==0)
delayms(10); if(timeabove==0)

(2021年整理)桌面时钟代码

(2021年整理)桌面时钟代码

桌面时钟代码(推荐完整)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(桌面时钟代码(推荐完整))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为桌面时钟代码(推荐完整)的全部内容。

桌面时钟代码(推荐完整)编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望桌面时钟代码(推荐完整) 这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为 <桌面时钟代码(推荐完整)〉这篇文档的全部内容.<HTML〉〈HEAD〉〈TITLE>动态数字时钟〈/TITLE〉<SCRIPT language="javascript">function digitalClock(){var today = new Date();digit_clock.innerText = today.toLocaleString();setTimeout( "digitalClock()", 1000 );}</SCRIPT>〈LINK rel="stylesheet" type=”text/css" href=”js.css">〈/HEAD〉〈BODY>〈H1 align="center” id=”digit_clock”>〈/H1><SCRIPT language=”javascript”>digitalClock();〈/SCRIPT〉<SCRIPT LANGUAGE=”JavaScript">var S = '。

Unity项目-简单时钟Clock

Unity项目-简单时钟Clock

Unity项⽬-简单时钟Clock项⽬展⽰Github项⽬地址:制作流程表盘绘制:采⽤绘制表盘及指针。

本例钟表素材⼤⼩256x256,存储格式为png,但发现导⼊Unity后较为失真,建议256+像素或调整Unity内相关参数。

代码配置:设置表盘、指针到合适位置,创建Clock.cs脚本挂载于表盘,编写代码:public class Clock : MonoBehaviour{//接收三个指针public GameObject hourHand;public GameObject minuteHand;public GameObject secondHand;//⼩时、分钟、秒钟private int h;private int m;private int s;void Update(){//读取本地时间GetNowTime();//更新针轴旋转://Quaternion.AngleAxis(angle : float, axis : Vector3):绕 axis轴旋转 angle⾓度,创建⼀个旋转//其中绕 axis轴⽅向:左⼿拇指指向axis⽅向,四指所环绕的⽅向(类似左⼿螺旋定则)hourHand.transform.rotation = Quaternion.AngleAxis((30 * h + 0.5f * m + (30.0f / 3600.0f) * s), Vector3.back);minuteHand.transform.rotation = Quaternion.AngleAxis((6 * m + 0.1f * s), Vector3.back);secondHand.transform.rotation = Quaternion.AngleAxis((6 * s), Vector3.back);}//读取本地时间信息private void GetNowTime(){//例如本地时间为 10:23:12h = DateTime.Now.Hour; //h = 10m = DateTime.Now.Minute; //m = 23s = DateTime.Now.Second; //s = 12}}问题探讨Quaternion.AngleAxis (angle : float, axis : Vector3):以⾃⾝原点为基点,创建返回⼀个绕axis轴旋转了angle⾓度旋转的四元数transform.Rotate(eulerAngles : Vector3):以⾃⾝原点为基点,应⽤⼀个欧拉⾓的旋转⾓度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles. y度围绕y轴。

7用C#编的模拟时钟(附源代码)

7用C#编的模拟时钟(附源代码)

使用C#模拟时钟表的一种简单制作方法PointF center=new PointF(s_pinlen+3,s_pinlen+3);//中心点位置SolidBrush sb=new SolidBrush(Color.Black);//时钟圆心的刷子除上述变量声明外,时钟表功能编写子方法,方法名为:AngleToPos和myClock,方法AngleToPos是根据角度和百分比计算出一个点的坐标函数,代码如下:PointF AngleToPos(int angle,float percent){PointF pos=new PointF();double radian=angle*Math.PI/180;pos.Y=center.Y-s_pinlen*percent*(float)Math.Sin(radian);pos.X=center.X+s_pinlen*percent*(float)Math.Cos(radian);return pos;}方法myClock主要是绘制时钟表的中心位置、秒针、分针及时针的结束位置。

代码如下: Pen pDisk=new Pen(Color.Orange,3);//时钟背景的笔Pen pScale=new Pen(Color.Coral);//刻度的笔Graphics myGraphics=pictureBox1.CreateGraphics();myGraphics.Clear(Color.White);Pen myPen=new Pen(Color.Black,2);Point CPoint=new Point(s_pinlen,s_pinlen);Point SPoint=new Point((int)(CPoint.X+(Math.Sin(6*s*Math.PI/180))* s_pinlen),(int)(CPoint.Y-(Math.Cos(6*s*Math.PI/180))*s_pinlen));Point MPoint=new Point((int)(CPoint.X+(Math.Sin(6*m*Math.PI/180))* m_pinlen),(int)(CPoint.Y-(Math.Cos(6*m*Math.PI/180))*m_pinlen));Point HPoint=new Point((int)(CPoint.X+(Math.Sin(((30*h)+(m/2))*Ma th.PI/180))*h_pinlen),(int)(CPoint.Y-(Math.Cos(((30*h)+(m/2))*Mat h.PI/180))*h_pinlen));myGraphics.FillEllipse(sb,center.X-8,center.Y-7,14,14);myGraphics.DrawLine(myPen,CPoint,SPoint);myPen=new Pen(Color.Blue,4);。

第七组 图形时钟 源代码

第七组 图形时钟 源代码

第七组图形时钟源代码#include <graphics.h>#include<stdio.h>#include<conio.h>#include<math.h>#include<dos.h>#include<time.h>#define pi 3.1415926#define midx 320#define midy 240#define CLICK 100#define CLICKDELAY 30void main(){//函数声明void draw(int hour,int min,int sec);void Click();void Highclick();void Naoling();int gdriver, gmode,h,m;start:gdriver=DETECT;gmode=0;initgraph(&gdriver, &gmode, ""); //初始化图形模式setbkcolor(WHITE); //设置背景颜色cleardevice();while(!kbhit()){setfillcolor(LIGHTGRAY); //给表盘添颜色setcolor(BLACK);fillcircle(320,240,215); //画实心圆盘fillcircle(320,240,170);setfillcolor(YELLOW);fillcircle(320,240,4);setcolor(YELLOW); //给刻度添颜色line(120,240,150,240); //9line(320,40,320,70); //12line(520,240,490,240); //3line(320,440,320,410); //6line(410,395.7,400,378.4); //5line(475.7,330,458.4,320); //4line(475.7,150,458.4,160); //2line(410,84.3,400,101.6); //1line(230,84.3,240,101.6); //11line(164.3,150,181.6,160); //10 line(164.3,330,181.6,320); //8 line(230,395.7,240,378.4); //7 setcolor(RED);//给表盘添数字outtextxy(319.9,36,"12"); outtextxy(118,238,"9"); outtextxy(519,238,"3"); outtextxy(320,435,"6"); outtextxy(418,411,"5"); outtextxy(490,337,"4"); outtextxy(493.2,139.9,"2"); outtextxy(419.9,66.8,"1"); outtextxy(215,63,"11"); outtextxy(143,136,"10"); outtextxy(146.8,340,"8"); outtextxy(220,413.2,"7");//获取系统时间time_t temp;struct tm *p;time(&temp);p=localtime(&temp);draw( p->tm_hour,p->tm_min,p->tm_sec); //调用画指针函数if(p->tm_min==0&&p->tm_sec==0) //整点报时Highclick();elseClick();if(p->tm_hour==h&&p->tm_min==m) //闹钟Naoling();Sleep(830);if(p->tm_hour==h&&p->tm_min==m)Naoling();cleardevice(); //清屏}closegraph(); //关闭模拟时钟界面,进入设定闹钟功能选择界面char p;start1:system("cls");printf("是否设定闹钟:(y/n/s)?");p=getch(); //获得指令if(p=='y') //执行指令{system("cls"); //清屏printf("请输入闹铃时间\n");printf("小时:");scanf("%d",&h);system("cls");printf("%02d:",h);printf("\n分钟:");scanf("%d",&m);system("cls");printf("闹铃时间:\n");printf("%02d:%02d\n",h,m);getch();goto start; //返回模拟时钟界面}else if(p=='n')goto start;else if(p=='s') //闹钟的延时{m=m+5; //延时五分钟goto start;}else{system("cls");goto start1;}}void draw(int hour,int min,int sec)//定义画指针函数{float endx,endy;float a_sec,a_min,a_hour;//根据获取时间计算对应指针角度a_sec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;//计算末端坐标endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);setcolor(BLUE); //给时针添颜色line(midx,midy,endx,endy);//利用line()函数画指针endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);setcolor(RED);line(midx,midy,endx,endy);endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec);setcolor(WHITE);line(midx,midy,endx,endy);}void Click() //定义控制指针转动的滴答声函数{Beep (700,100);Sleep(CLICKDELAY);}void Highclick() //定义整点报时的声音控制函数{Beep(1000,200);Sleep(CLICKDELAY);}void Naoling() //定义闹钟的声音控制函数{Beep(2000,200);}。

[最新]电子时钟源代码及注释

[最新]电子时钟源代码及注释

电子时钟源代码及注释#include "reg52.h"#define TIMER0_COUNT 0xEC78/*10000h-(12,000,000/(12*200))*/#define uchar unsigned char#define uint unsigned intucharled_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//共阳数码管0~9uchar led_ctl[]={0xfe,0xfd,0xfb,0xf7}; //位选码uchar buffer[]={0,0,0,0}; //码管数值char i=0;sbit mode=P1^4; //选择模式引脚sbit add=P1^5; //加sbit dec=P1^6; //减sbit alarm=P3^2; //闹钟sbit sec_led=P1^1; //秒驱动LED闪烁sbit alarm_warn=P1^0;//闹钟提醒引脚int time=0;char status=0; //模式值sbit sTime=P1^2; //设置时间提示sbit sClock=P3^3; //设置闹钟提示uint hour=19,min=5,sec=0; //初始时分秒uint alarmhour=19,alarmmin=0,flag=1; //初始闹钟时分bit ringoff=1;//闹铃停止unsigned char msecond=0; //毫秒计数变量unsigned char second2; //秒计数变量uchar code freqh[]={0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, //低音1~7 第一个八度0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音 1~7 第二个八度0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//高音 1~7 第三个八度uchar code freql[]={0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B, //低音12345670x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D, //中音 12345670x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16}; //高音 1234567uchar codesong[]={5,3,2,3,3,1,4,3,1,5,3,2,3,3,1,4,3,1,5,3,1,5,2,1,6,2 ,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,3,3,2,1,3,1,2,3,1,3,3,2,3,2,1,4,2,1,5,2,1,6,2,1,5,2,1,4,2,1,5,2,1,3,2,1,4,2,1,5,2,1 ,4,2,2,6,2,1,5,2,1,4,2,2,3,2,1,2,2,1,3,2,1,2,2,1,1,2,1,2,2, 1,3,2,1,4,2,1,5,2,1,6,2,1,4,2,2,6,2,1,5,2,1,6,2,2,7,2,1,1,3,1 ,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,3,3,2,1,3, 1,2,3,1,3,3,2,2,3,1,1,3,1,2,3,1,7,2,1,1,3,1,2,3,1,3,3,1,2,3,1,1,3,1 ,7,2,1,1,3,2,6,2,1,7,2,1,1,3,2,1,2,1,2,2,1,3,2,1,4,2,1,3,2,1,2,2,1,3,2,1,1,3,1,7,2,1,1,3,1,6,2,2,1,3,2 ,7,2,1,6,2,2,5,2,1,4,2,1,5,2,1,4,2,1,3,2,1,4,2,1,5,2,1,6,2, 1,7,2,1,1,2,1,6,2,2,1,3,1,7,2,1,1,3,2,7,2,1,6,2,1,7,2,1,1,3,1,2,3,1,1,3,1 ,7,2,1,1,3,1,6,2,1,7,2,1,0,0,0}; //卡农//一个音符有三个数字。

钟表源程序代码

钟表源程序代码

钟表源程序代码钟表源程序代码采用了easyx图形库作者:转角梦覃飞絮#include#include#include#include#include#define PI 3.1415926//自定义函数声明void draw_biaozhen(int x,int y,int second,int minute,int hour);//画表针函数void numbertime(int year,int month,int day,char week,int second,int minute,int hour);//显示数字时间void draw_biaopan(int x,int y);//画表盘void huaxian(); //画心形线void main(){initgraph(640,480);srand((unsigned)time(NULL));int x=320,y=240; //设定表盘圆心位置SYSTEMTIME time; //定义变量保存当前时间//画心形线outtextxy(20,40,"稍后进入钟表界面...");huaxian();cleardevice();setwritemode(R2_XORPEN); //设置XOR绘图模式//画表盘draw_biaopan( x, y);while(!kbhit()){ //有用户键就退出GetLocalTime(&time);numbertime(time.wYear ,time.wMonth,time.wDay ,time.wDa yOfWeek ,time.wSecond ,time. wMinute,time.wHour);//画指针draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHou r );Sleep(1000);//擦表针draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHou r );//实现随机色文字setcolor(RGB(rand()%255,rand()%255,rand()%255));outtextxy(285,320," 笨蛋");setfont(80,0,"宋体");outtextxy(40,80,"开");outtextxy(40,330,"心");outtextxy(520,80,"快");outtextxy(520,330,"乐");setfont(0,0,"宋体");}closegraph();}//画表针函数void draw_biaozhen(int x,int y,int second,int minute,int hour) {double a_sec,a_min,a_hour; //定义秒分时表针的弧度int x_sec,y_sec,x_min,y_min,x_hour,y_hour; //定义秒分时表针末端位置//计算表针弧度a_sec=second*2*PI/60;a_min=minute*2*PI/60+a_sec/60;a_hour=hour*2*PI/12+a_min/12;//计算表针末端位置x_sec=(int)(x+120*sin(a_sec));y_sec=(int)(y-120*cos(a_sec));x_min=(int)(x+80*sin(a_min));y_min=(int)(y-80*cos(a_min));x_hour=(int)(x+60*sin(a_hour));y_hour=(int)(y-60*cos(a_hour));//画秒针setlinestyle(PS_SOLID,NULL,1);setcolor(YELLOW);line(x,y,x_sec,y_sec);//画分针setlinestyle(PS_SOLID,NULL,3);setcolor(LIGHTGRAY);line(x,y,x_min,y_min);//画分针setlinestyle(PS_SOLID,NULL,5);setcolor(BLUE);line(x,y,x_hour,y_hour);}//显示数字时间函数void numbertime(int year,int month,int day,char week,int second,int minute,int hour){char str[50];//用来存储时间字符sprintf(str,"当前时间:%d年%d月%d日星期%d %d :%d :%d ",year,month,day,week,hour,minute,second);setcolor(BLUE);outtextxy(20,20,str);outtextxy(20,40,"按任意键退出程序..."); }// 画表盘函数void draw_biaopan(int x,int y){int x1,y1,x2,y2,x3,y3,x4,y4,r=150; setcolor(RED);circle(x,y,38);circle(x,y,2);setlinestyle(PS_SOLID,NULL,2); circle(x,y,150);for(int i=0;i<6;i++) //12个刻度{setcolor(YELLOW);x1=x+(int)(r*cos(2*PI*i/12));y1=y-(int)(r*sin(2*PI*i/12));x2=x+(int)(0.94*r*cos(2*PI*i/12));y2=y-(int)(0.94*r*sin(2*PI*i/12));x3=x+(int)(r*cos(2*PI*i/12+PI));y3=y-(int)(r*sin(2*PI*i/12+PI));x4=x+(int)(0.94*r*cos(2*PI*i/12+PI)); y4=y-(int)(0.94*r*sin(2*PI*i/12+PI)); line(x1,y1,x2,y2);line(x3,y3,x4,y4);}for(i=0;i<30;i++) //其他的小刻度{setcolor(RED);x1=x+(int)(r*cos(2*PI*i/60));y1=y-(int)(r*sin(2*PI*i/60));x2=x+(int)(0.97*r*cos(2*PI*i/60));y2=y-(int)(0.97*r*sin(2*PI*i/60));x3=x+(int)(r*cos(2*PI*i/60+PI));y3=y-(int)(r*sin(2*PI*i/60+PI));x4=x+(int)(0.97*r*cos(2*PI*i/60+PI));y4=y-(int)(0.97*r*sin(2*PI*i/60+PI));line(x1,y1,x2,y2);line(x3,y3,x4,y4);}setcolor(LIGHTRED);outtextxy(316,368,"6");outtextxy(312,98,"12");outtextxy(185,232,"9");outtextxy(450,232,"3");}//画心型线函数void huaxian(){double x1, y1, r1;while(!MouseHit()){for(int k=0;k<=3;k++){setcolor(RGB(rand()%255, rand()%255, rand()%255)); for(int i=0; i<90; i++) {for (int j=0; j<90; j++) {r1 = PI/45 * i * (1 - sin(PI/45 * j)) * 18;x1 = r1 * cos(PI/45 * j) * sin(PI/45 * i) + 320;y1 = -r1 * sin(PI/45 * j) + 120;// 画圆fillcircle((int) x1, (int) y1, 1);}Sleep(30);}// 画完后暂停1秒Sleep(1000);}} }。

模拟指针时钟gtk、glade实现代码

模拟指针时钟gtk、glade实现代码
}
else if(s>15&&s<=30)
{
x_s=175+100*sin((6*s)*(PI/180));
y_s=175-(100*cos((6*s)*(PI/180)));
}
else if(s>30&&s<=45)
{
x_s=175+100*sin((6*s)*(PI/180));
sleep(1);
}
}
//时钟线程初始化
int main(int argc,char *argv[])
{
gtk_init(&argc,&argv);
WIN window;
gtk_window_init(&window);
pthread_t tid;
int ret=pthread_create(&tid,NULL,fresh_clock_pthread,(void *)&window);
}
else if(t_m>1800&&t_m<=2700)
{
x_m=175+80*sin((0.1*t_m)*(PI/180));
y_m=175-(80*cos((0.1*t_m)*(PI/180)));
}
else if(t_m>2700&&t_m<=3600)
//用到获取时间标签函数
#include <glade/glade.h>
#include <gtk/gtk.h>
#include <stdio.h>

python turtle 时钟案例

python turtle 时钟案例

Python Turtle 时钟案例背景Python Turtle 是一个基于 Python 编程语言的图形库,它可以通过简单的命令来创建复杂的图形。

它提供了一个绘图窗口,可以在窗口中使用乌龟图形来绘制图案、图形和动画。

Python Turtle 不仅适合初学者学习编程,也可以用于创建有趣和有用的图形应用程序。

时钟是我们日常生活中必不可少的工具之一。

在这个案例中,我们将使用 Python Turtle 来创建一个简单的时钟程序。

我们将使用 Turtle 绘图窗口来绘制时钟的外观,并使用 Python 的时间模块来获取当前时间,然后将时、分和秒的指针绘制到相应的位置。

过程步骤 1:导入库和模块首先,我们需要导入 Python 中的 turtle 和 time 模块。

turtle 模块用于绘制图形,而 time 模块用于获取当前时间。

import turtleimport time步骤 2:创建绘图窗口和时钟外观我们使用 turtle.Turtle() 创建一个乌龟对象,并将其命名为 clock。

然后,我们设置绘图窗口的大小和背景颜色。

window = turtle.Screen()window.bgcolor("white")window.setup(width=600, height=600)window.title("Python Turtle Clock")window.tracer(0)步骤 3:绘制时钟的外圆我们使用 clock.circle() 方法来绘制时钟的外圆。

该方法接受两个参数:半径和角度。

我们将半径设置为 200,并将角度设置为 360,这样就可以绘制出一个完整的圆。

clock = turtle.Turtle()clock.shape("turtle")clock.color("black")clock.speed(1)clock.penup()clock.goto(0, -200)clock.pendown()clock.circle(200)步骤 4:绘制时、分和秒的指针我们使用 clock.goto() 方法将乌龟移动到时钟的中心位置。

matlab课程设计简易时钟gui

matlab课程设计简易时钟gui

matlab课程设计简易时钟gui一、教学目标本节课的教学目标是使学生掌握利用MATLAB GUI设计简易时钟的基本方法,培养学生的编程能力和创新思维。

具体目标如下:1.知识目标:(1)了解MATLAB GUI的基本概念和设计原理;(2)掌握MATLAB GUI编程的基本语法和技巧;(3)熟悉MATLAB GUI中定时器控件的使用。

2.技能目标:(1)能够独立设计并实现一个简易的MATLAB GUI时钟;(2)能够运用MATLAB GUI编程解决实际问题;(3)具备一定的MATLAB编程调试能力。

3.情感态度价值观目标:(1)培养学生对编程事业的热爱和敬业精神;(2)增强学生的团队协作意识和沟通能力;(3)培养学生的创新思维和自主学习能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.MATLAB GUI简介:介绍MATLAB GUI的概念、特点和基本构成;2.MATLAB GUI设计基础:讲解MATLAB GUI设计的基本原理和语法;3.定时器控件的使用:介绍定时器控件的功能、属性和编程方法;4.简易时钟的设计与实现:引导学生动手实践,设计并实现一个简易的MATLAB GUI时钟;5.案例分析与讨论:分析并点评学生作品,探讨如何优化设计方案。

三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法:1.讲授法:用于讲解MATLAB GUI的基本概念、原理和语法;2.案例分析法:通过分析典型实例,使学生掌握定时器控件的使用方法和技巧;3.实验法:引导学生动手实践,设计并实现简易时钟,培养学生的实际操作能力。

四、教学资源1.教材:选用《MATLAB编程与应用》作为主要教材,为学生提供理论知识的学习依据;2.参考书:推荐《MATLAB GUI设计指南》等参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件和教学视频,为学生提供直观的学习资源;4.实验设备:准备计算机和MATLAB软件,确保学生能够顺利进行实验操作。

简单Opengl时钟时钟源代码可以运行

简单Opengl时钟时钟源代码可以运行

#pragma comment(lib, "glut32.lib")#pragma comment(lib, "glu32.lib")#pragma comment(lib, "opengl32.lib")#include <GL/glut.h>#include<math.h>#define PI 3.14159GLfloat m_rotAngle=0.0;void Display(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLineWidth(5);GLfloat i,angle;GLint circle_points = 100;GLint circle_point = 60;glBegin(GL_LINE_LOOP); //绘制闹钟的外圆for (i = 0; i < circle_points; i++) {angle = 2*PI*i/circle_points;glVertex2f(100*cos(angle), 100*sin(angle));}glEnd();glBegin(GL_LINE_LOOP); //绘制原点小圆for (i = 0; i < circle_points; i++) {angle = 2*PI*i/circle_points;glVertex2f(cos(angle), sin(angle));}glEnd();glMatrixMode(GL_MODELVIEW);glLoadIdentity();glPointSize(1);glBegin(GL_POINTS); //绘制秒针刻度for (i = 0; i < circle_point; i++) {angle = 2*PI*i/circle_point;glVertex2f(95*cos(angle), 95*sin(angle));}glEnd();glMatrixMode(GL_MODELVIEW);glLoadIdentity();glPointSize(5);glBegin(GL_POINTS); //绘制时针刻度for (i = 0; i < 12; i++) {angle = 2*PI*i/12;glVertex2f(95*cos(angle), 95*sin(angle));}glEnd();glMatrixMode(GL_MODELVIEW);glLoadIdentity();glColor3f(1.f,1.f,0.f);glPushMatrix(); //绘制秒针glRotatef(m_rotAngle, 0.0f, 0.0f, 1.0f);glTranslatef(0.0f, 10.0f, 0.0f);glBegin(GL_TRIANGLES);glVertex3f(0, -100, 0);glVertex3f(1, 0, 0);glVertex3f(-1, 0, 0);glEnd();glPopMatrix(); //绘制分针glColor3f(1.f,0.f,0.f);glPushMatrix();glRotatef(m_rotAngle/60, 0.0f, 0.0f, 1.0f);glTranslatef(0.0f, 10.0f, 0.0f);glBegin(GL_TRIANGLES);glVertex3f(0, -80, 0);glVertex3f(1, 0, 0);glVertex3f(-1, 0, 0);glEnd();glPopMatrix();glColor3f(0.f,0.f,1.f);glPushMatrix(); //绘制时针glRotatef(m_rotAngle/3600, 0.0f, 0.0f, 1.0f);glTranslatef(0.0f, 10.0f, 0.0f);glBegin(GL_TRIANGLES);glVertex3f(0, -60, 0);glVertex3f(1, 0, 0);glVertex3f(-1, 0, 0);glEnd();glPopMatrix();m_rotAngle += 6.0f;if( m_rotAngle > 216000.0f)m_rotAngle = 0.0f;glutSwapBuffers();}void Init(){glEnable(GL_DEPTH_TEST); //启用隐藏面移除glClearColor(0.0f, 0.0f, 0.0f, 1.0f );}void GLTimer(int value){glutPostRedisplay();glutTimerFunc(100, GLTimer, 1);}void Reshape(int w, int h){GLfloat nRange = 100.0f;if(h == 0)h = 1;glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if (w <= h)glOrtho (-nRange, nRange, nRange*h/w, -nRange*h/w, -nRange*2.0f, nRange*2.0f);elseglOrtho (-nRange*w/h, nRange*w/h, nRange, -nRange, -nRange*2.0f, nRange*2.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize(800, 600);glutCreateWindow("时钟");glutReshapeFunc(Reshape);glutDisplayFunc(Display);glutTimerFunc(100, GLTimer, 1);Init();glutMainLoop();return 0;}。

简单实用的LED时钟控件源码

简单实用的LED时钟控件源码

简单的LED时钟控件下面是该控件的源码/**//////////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __MFC_EXT_DIGITCLOCK_H__#define __MFC_EXT_DIGITCLOCK_H__// EDClock.h : header file//#define IntegerCount 3#define DecimalCount 5//4/**//////////////////////////////////////////////////////////////////////////////// CDigitDisplayer windowclass CDigitDisplayer : public CStatic...{// Constructionpublic:CDigitDisplayer();virtual ~CDigitDisplayer();// Attributespublic:static COLORREF origin;// Operationspublic:COLORREF GetColor() const ...{ return m_color;}COLORREF SetColor(COLORREF color);double m_number;void DisplayDigit(double number);void GetDigit(double number);// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CDigitDisplayer)protected:virtual void PreSubclassWindow();//}}AFX_VIRTUAL// Implementationpublic:// Generated message map functionsprotected://{{AFX_MSG(CDigitDisplayer)afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg void OnPaint();afx_msg void OnSize(UINT nType, int cx, int cy);//}}AFX_MSGprivate:COLORREF m_color;UINT m_w;UINT m_h;BITMAP m_bm;HBITMAP m_hBitmap[13];UINT m_nTimer;int m_digit[10];void Output(UINT digit, UINT pos);DECLARE_MESSAGE_MAP()};/**////////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCA TION}}// Microsoft Developer Studio will insert additional declarations immediately before the previous line.#endif // __MFC_EXT_DIGITCLOCK_H__//// Author: Xie Jingwei, Chinese Spell: 谢敬伟// Email to me, jw_xie@// A digital clock control, :-)//// Usage: See the header, just simple// Please Note: Make sure ADD the 12 bitmaps to your project, and// sort the ID to correct order. I used IDB_BITMAP1 to IDB_BITMAP12// side by side. See following://// Digit: ID V ALUE// 0 IDB_BITMAP1 100// 1 IDB_BITMAP2 101// 2 IDB_BITMAP3 102// 3 IDB_BITMAP4 103// 4 IDB_BITMAP5 104// 5 IDB_BITMAP6 105// 6 IDB_BITMAP7 106// 7 IDB_BITMAP8 107// 8 IDB_BITMAP9 108// 9 IDB_BITMAP10 109// : IDB_BITMAP11 110// IDB_BITMAP12 111//// There are three properties.// face color <-----> SetColor();// style <-----> SetStyle();// alarm mode <----> SetAlarm();/**///////////////////////////////////////////////////////////////////////////////// EDClock.cpp : implementation file//数码管显示#include "stdafx.h"#include "resource.h"#include "DigitDisplayer.h"#include "math.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif// The resource bitmap face color//static COLORREF origin;COLORREF CDigitDisplayer::origin = RGB(255, 0, 0);/**//////////////////////////////////////////////////////////////////////////////// CDigitDisplayerCDigitDisplayer::CDigitDisplayer()...{m_color = origin;for(int i = 0; i< 13; i++) ...{//创建数码显示的位图HBITMAP temp = (HBITMAP)::CreateMappedBitmap(AfxGetApp()->m_hInstance, i+IDB_BITMAP1, 0, NULL, 0);//创建合适的位图m_hBitmap[i] = (HBITMAP)::CopyImage( temp, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG | LR_COPYDELETEORG);//将位图存入缓存以备显示}for(i=0;i<8;i++) m_digit[i]=0;m_number=0;}CDigitDisplayer::~CDigitDisplayer()...{for(int i = 0; i< 12; i++) ...{if(m_hBitmap[i])::DeleteObject(m_hBitmap[i]);//清空缓存}}BEGIN_MESSAGE_MAP(CDigitDisplayer, CStatic)//{{AFX_MSG_MAP(CDigitDisplayer)ON_WM_ERASEBKGND()ON_WM_PAINT()ON_WM_SIZE()//}}AFX_MSG_MAPEND_MESSAGE_MAP()/**//////////////////////////////////////////////////////////////////////////////// CDigitDisplayer message handlersvoid CDigitDisplayer::PreSubclassWindow()...{::GetObject(m_hBitmap[0], sizeof BITMAP, &m_bm);CStatic::PreSubclassWindow();}void CDigitDisplayer::OnPaint() //设置数码宽度和高度...{CPaintDC dc(this); // device context for paintingCRect rectClient;GetClientRect(&rectClient);m_h = rectClient.Height();m_w = rectClient.Width()/(IntegerCount+DecimalCount+2);DisplayDigit(m_number);}BOOL CDigitDisplayer::OnEraseBkgnd(CDC* pDC) //给数码显示准备无效区域...{// TODO: Add your message handler code here and/or call defaultCBrush brush;brush.CreateSolidBrush(::GetSysColor(COLOR_WINDOWTEXT) );CBrush* pOldBrush = pDC->SelectObject(&brush);CRect rectClient;GetClientRect(&rectClient);pDC->PatBlt(0, 0, rectClient.Width(), rectClient.Height(), PA TCOPY);pDC->SelectObject(pOldBrush);return CStatic::OnEraseBkgnd(pDC);}void CDigitDisplayer::Output(UINT digit, UINT pos)//数字输出...{// draw the bitmapCClientDC dc(this);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap* pBitmap = CBitmap::FromHandle( m_hBitmap[digit] );CBitmap* pOldBitmap = dcMem.SelectObject(pBitmap);dc.StretchBlt(m_w*pos, 0, m_w, m_h,&dcMem, 0, 0, m_bm.bmWidth, m_bm.bmHeight, SRCCOPY);dcMem.SelectObject(pOldBitmap);dcMem.DeleteDC();}COLORREF CDigitDisplayer::SetColor(COLORREF color)//显示数字的颜色设置,若是红色,则改为显示时的绿色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#pragma comment(lib, "glut32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "opengl32.lib")
#include <GL/glut.h>
#include<math.h>
#define PI 3.14159
GLfloat m_rotAngle=0.0;
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLineWidth(5);
GLfloat i,angle;
GLint circle_points = 100;
GLint circle_point = 60;
glBegin(GL_LINE_LOOP); //绘制闹钟的外圆for (i = 0; i < circle_points; i++) {
angle = 2*PI*i/circle_points;
glVertex2f(100*cos(angle), 100*sin(angle));
}
glEnd();
glBegin(GL_LINE_LOOP); //绘制原点小圆for (i = 0; i < circle_points; i++) {
angle = 2*PI*i/circle_points;
glVertex2f(cos(angle), sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(1);
glBegin(GL_POINTS); //绘制秒针刻度
for (i = 0; i < circle_point; i++) {
angle = 2*PI*i/circle_point;
glVertex2f(95*cos(angle), 95*sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(5);
glBegin(GL_POINTS); //绘制时针刻度
for (i = 0; i < 12; i++) {
angle = 2*PI*i/12;
glVertex2f(95*cos(angle), 95*sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.f,1.f,0.f);
glPushMatrix(); //绘制秒针
glRotatef(m_rotAngle, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 10.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0, -100, 0);
glVertex3f(1, 0, 0);
glVertex3f(-1, 0, 0);
glEnd();
glPopMatrix(); //绘制分针
glColor3f(1.f,0.f,0.f);
glPushMatrix();
glRotatef(m_rotAngle/60, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 10.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0, -80, 0);
glVertex3f(1, 0, 0);
glVertex3f(-1, 0, 0);
glEnd();
glPopMatrix();
glColor3f(0.f,0.f,1.f);
glPushMatrix(); //绘制时针glRotatef(m_rotAngle/3600, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 10.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0, -60, 0);
glVertex3f(1, 0, 0);
glVertex3f(-1, 0, 0);
glEnd();
glPopMatrix();
m_rotAngle += 6.0f;
if( m_rotAngle > 216000.0f)
m_rotAngle = 0.0f;
glutSwapBuffers();
}
void Init()
{
glEnable(GL_DEPTH_TEST); //启用隐藏面移除
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
}
void GLTimer(int value)
{
glutPostRedisplay();
glutTimerFunc(100, GLTimer, 1);
}
void Reshape(int w, int h)
{
GLfloat nRange = 100.0f;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho (-nRange, nRange, nRange*h/w, -nRange*h/w, -nRange*2.0f, nRange*2.0f);
else
glOrtho (-nRange*w/h, nRange*w/h, nRange, -nRange, -nRange*2.0f, nRange*2.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("时钟");
glutReshapeFunc(Reshape);
glutDisplayFunc(Display);
glutTimerFunc(100, GLTimer, 1);
Init();
glutMainLoop();
return 0;
}。

相关文档
最新文档