• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 理科资料 > 正文

    [使用C#模拟时钟表的一种简单制作方法]评测:使用c

    时间:2019-02-10 03:13:23 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要: 本文利用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

    推荐访问:制作方法 时钟 模拟 简单

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章