简单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制作的简单时钟源代码

// 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源代码

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年整理)桌面时钟代码

桌面时钟代码(推荐完整)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(桌面时钟代码(推荐完整))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为桌面时钟代码(推荐完整)的全部内容。
桌面时钟代码(推荐完整)编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望桌面时钟代码(推荐完整) 这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为 <桌面时钟代码(推荐完整)〉这篇文档的全部内容.<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项⽬展⽰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#编的模拟时钟(附源代码)

使用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);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}。