使用C#模拟时钟表的一种简单制作方法

来源 :考试周刊 | 被引量 : 0次 | 上传用户:nianlanzhen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 本文利用C#软件中计时器控件和GDI 技术制作出时钟表,并给出相应的源程序。
  关键词: C# 模拟时钟表 Graphics
  
  1.GDI 图形库简介
  1.1概述
  GDI 是Microsoft的新.NET Framework类库用于图形编程,因为它是.NET Framework的一部分,所以也是面对对象的。
  1.2设备环境和对象
  在GDI 中识别输出设备的方式是使用设备环境DC对象,该对象存储特定设备的信息并能把GDI API函数调用转换为要发送给该设备的指令,还可以查询设备环境对象,确定对应的设备有什么功能,这样才能据此调整输出结果。
  在GDI 中设备环境包装在.NET基类System.Drawing.Graphics中,大多数绘图工作都是调用Graphics的对象完成的。
  2.如何利用GDI 绘制时钟表
  2.1时钟表的各控件属性的设置
  用C#中各控件制作一个指针式的时钟放在桌面上显示的界面。包括1个PictureBox控件、1个Timer控件、1个NotifyIcon控件及StatusStrip控件。
  2.2各控件的属性设置
  Timer控件的Interval属性值设置为1000,Enable属性值设置为True;窗体的StartPosition属性设置为CenterScreen,这个属性使得钟表在屏幕上中中央显示。
  2.3功能实现代码
  为实现该时钟表功能,需要设计并输入相应对象相应事件或过程的程序代码。方法是:在设计状态,双击相应控件,或双击控件的某一事件,并输入相应的C#程序代码。
  2.4通用声明及时钟表设计方法
  在程序中需要有一批变量或常量的定义,可事先在通用声明中完成,代码如下:
  const int s_pinlen = 100;//秒针长度
  const int m_pinlen = 75; //分针长度
  const int h_pinlen = 75; //时针长度
  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)) * Math.PI / 180)) * h_pinlen), (int)(CPoint.Y - (Math.Cos(((30 * h) (m / 2)) * Math.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);
  myGraphics.DrawLine(myPen, CPoint, MPoint);
  myPen = new Pen(Color.Green , 6);
  myGraphics.DrawLine(myPen, CPoint, HPoint);
  myGraphics.DrawEllipse(pDisk, 1, 1, s_pinlen * 2, s_pinlen*2);//画刻度
  for (int i = 0; i < 360; i = 6)
  {
  Pen tempPen = (i % 30 == 0) ? pDisk : pScale;
  PointF qidian = AngleToPos(i, 0.87f);
  PointF zhongdian= AngleToPos(i, 1.0f);
  myGraphics.DrawLine(tempPen, qingdian, zhongdian);
  }
  2.5 Timer的Tick事件中的代码
  计时器控件代码部分完成的功能是整个时钟表的核心,其代码如下:
  int h=DateTime.Now.Hour;
  int m = DateTime.Now.Minute;
  int s = DateTime.Now.Second;
  myClock(h, m, s);//调用画时钟表的方法
  toolStripStatusLabel1.Text = "当前时间:" DateTime.Now.ToLongTimeString();
  3.结语
  编写图形代码是计算机编程领域中比较复杂的工作之一,利于C#中GDI 动态地生成时钟表,编写程序的设计与实现是以数学科学的设计为基础,以合理的设计思想为指导,以必要的程序设计语言为工具,基本上满足了用户的需要的时钟表。
  
  参考文献:
  [1]梁冰,吕双.C#程序开发范例宝典(第2版).明日科技.人民邮电出版社,2009.10.
  [2]陈广.C#程序设计基础教程与实训.北京大学出版社,2008.2.
  [3]刘莆迎.C#程序设计教程.电子工业出版社,2008.6.
其他文献
“教育要面向现代化、面向世界、面向未来”,现今我国的教育加快了改革和发展的步伐,开始形成了具有中国特色的社会主义教育体系的基本框架,并正在努力实现教育现代化。实现教育的现代化在一定程度上取决于教学现代化,而教学现代化除了内容现代化以外,教学手段的现代化是一个重要标志。  随着现代教育技术的发展,电教媒体在体育教学中的运用也越来越广泛。它是一种集声、像、动画、文字于一体的结构化的载体,通过不同的形式
摘 要: 随着计算机的普及和互联网的快速发展,网络安全问题显得愈来愈重要。为解决这一问题,产生了很多网络安全产品,防火墙就是其中使用较广的一个。针对不同的用户和网络特点,防火墙所采用的技术也会有所不同。  关键词: 信息安全 网络安全 防火墙 技术特征     信息安全是国家发展所面临的一个重要问题,对于这个问题,我们还没有从系统的规划上去考虑它,从技术上、产业上、政策上来发展它。政府不仅应该看见
摘 要: 当前,知识创新、技术创新和高新技术产业化已经成为衡量国家竞争力的关键因素。高等学校作为基础研究的重要基地,越来越发挥着不可替代的作用。本文主要探讨了应对新形势计算机基础教学的应变策略和将其付诸教学实践环节。实践证明这些策略能提高教与学的效率,具有较高的实用价值。  关键词: 计算机基础教学 应变策略 教学体系 教学实践    一、前言  近年来,高校计算机基础教育的“外围”形势发生了巨大
探讨了将模糊规则的提取和推理转化为人工神经网络参数的确定及神经计算,提出一种具有自学习功能的模糊神经网络(FNN),并用因子动态调整逼近法,解决了系统中静态误差和积分饱和等问题
日本研制出电视转播台用智能化防雷装置电视转播台多数建在山上空旷地带。众所周知,这是容易受到雷击的地区,而转播台机器的雷害大部分是从供电线路侵入的雷电引起的。对于这种