用c#编的模拟时钟(附源代码).docxVIP

  • 11
  • 0
  • 约3千字
  • 约 3页
  • 2021-01-22 发布于天津
  • 举报
使用C#模拟时钟表的一种简单制作方法 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 个 Notifylcon 控件及 StatusStrip 控件。 2.2各控件的属性设置 Timer控件的Interval 属性值设置为1000,Enable属性值设置为True;窗体的StartPosi tion属性设置为CenterScreen,这个属性使得钟表在屏幕上中中央显示。 2.3功能实现代码 为实现该时钟表功能,需要设计并输入相应对象相应事件或过程的程序代码。 方法是:在设 计状态,双击相应控件,或双击控件的某一事件,并输入相应的C#程序代码。 2.4通用声明及时钟表设计方法 在程序中需要有一批变量或常量的定义,可事先在通用声明中完成,代码如下: const int s_pi nle n = 100;// 秒针长度 const int m_pi nle n = 75; // 分针长度 const int h_pinlen = 75; // 时针长度 PointF cen ter = new Poin tF(s_p inlen +3, s_pinlen +3);// 中心点位置 SolidBrush sb = new SolidBrush(Color.Black);// 时钟圆心的刷子 除上述变量声明外,时钟表功能编写子方法,方法名为:AngleToPos和myClock, 方法AngleToPos是根据角度和百分比计算出一个点的坐标函数,代码如下: Poi ntF An gleToPos(i nt an gle, float perce nt) { PointF pos = new Poin tF(); double radia n = an gle * Math.PI / 180; pos.Y = center.Y - s_pinlen * percent * (float)Math.Sin(radian); pos.X = cen ter.X + s_pi nle n * perce nt * (float)Math.Cos(radia n); return pos; } 代码如下:方法myClock主要是绘制时钟表的中心位置、 秒针、分针及时针的结束位置, 代码如下: Pen pDisk=n ew Pen (Color.Ora nge,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); Poi nt SPoi nt = new Poi nt((i nt)(CPoi nt.X + (Math.Si n(6 * s * Math.PI / 180)) * s_pi nlen), (in t)(CPoi nt.Y - (Math.Cos(6 * s * Math.PI / 180)) * s_pi nle n)); Point MPoint = new Point((int)(CPoint.X + (Math.Sin(6 * m * Math.PI / 180)) * m_pi nlen), (in t)(CPoi nt.Y - (Math.Cos(6 * m * Math.PI / 180)) * m_pi nle n)); Point HPoint = new Point((int)(CPoint.X + (Math.Sin(((30 * h) + (m / 2)) * Ma th.PI / 180)) * h_pi nlen), (in t

文档评论(0)

1亿VIP精品文档

相关文档