A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;

  6. using System.Text;
  7. using System.Windows.Forms;

  8. namespace Simpclock
  9. {
  10.      public partial class Form1 : Form
  11.      {
  12.          DateTime date = DateTime.Now;

  13.          public Form1()
  14.          {
  15.              InitializeComponent();

  16.          }

  17.          private void Form1_Load(object sender, EventArgs e)
  18.          {
  19.              date = DateTime.Now;

  20.          }

  21.          private void OnPaint(object sender, PaintEventArgs e)
  22.          {
  23.              Font font = new Font("Times New Roman", 20);
  24.              Graphics g = CreateGraphics();
  25.              g.DrawString(date.ToString(), font, Brushes.Firebrick, 10,330 );
  26.              g.DrawString(date.DayOfWeek.ToString(), font, Brushes.Red, 250, 330);
  27.              DrawDial(g);
  28.              DrawSecondPointer(g);
  29.              DrawMinutePointer(g);
  30.              DrawHourPointer(g);

  31.          }
  32.          //刷新时间
  33.          private void OnTime(object sender, EventArgs e)
  34.          {
  35.              date = DateTime.Now;
  36.              Invalidate();
  37.          }
  38.          //画钟表
  39.          //表盘部分
  40.          Point GetPosition(int s, Point center, double radius)//定位
  41.          {
  42.              Point p = new Point();
  43.              double x = center.X + radius * Math.Sin(Math.PI / 30 * s);
  44.              double y = center.Y - radius * Math.Cos(Math.PI / 30 * s);
  45.              p.X = (int)x;
  46.              p.Y = (int)y;
  47.              return p;
  48.          }

  49.          void DrawDial(Graphics g)//外圆及刻度
  50.          {
  51.              int n;
  52.              Rectangle rect = new Rectangle(40, 10, 300, 300);
  53.              //g.FillEllipse(Brushes.White, 40, 10, 300, 300);
  54.              g.DrawEllipse(new Pen(Color.Black, 3), rect);
  55.              Point p1, p2;
  56.              Point center = new Point(190, 160);
  57.              for (n = 0; n < 60; n++)
  58.              {
  59.                  p1 = GetPosition(n, center, 150);
  60.                  if (n % 5 == 0)
  61.                  {
  62.                      p2 = GetPosition(n, center, 130);
  63.                      g.DrawLine(new Pen(Color.Black, 2), p1, p2);
  64.                  }
  65.                  else
  66.                  {
  67.                      p2 = GetPosition(n, center, 140);
  68.                      g.DrawLine(Pens.Red, p1, p2);
  69.                  }
  70.              }
  71.              Font font = new Font("Times New Roman", 20);
  72.              n = 0;
  73.              p1 = GetPosition(n, center, 130);
  74.              g.DrawString("XII", font, Brushes.Black, p1.X - 25, p1.Y);
  75.              n += 15;
  76.              p1 = GetPosition(n, center, 130);
  77.              g.DrawString("III", font, Brushes.Black, p1.X - 35, p1.Y - 15);
  78.              n += 15;
  79.              p1 = GetPosition(n, center, 130);
  80.              g.DrawString("VI", font, Brushes.Black, p1.X - 20, p1.Y - 30);
  81.              n += 15;
  82.              p1 = GetPosition(n, center, 130);
  83.              g.DrawString("IX", font, Brushes.Black, p1.X, p1.Y - 15);
  84.          }
  85.          //秒针部分
  86.          void DrawSecondPointer(Graphics g)
  87.          {
  88.              Point center = new Point(190, 160);
  89.              Point p;
  90.              p = GetPosition(date.Second, center, 130);
  91.              g.DrawLine(Pens.Red, center, p);
  92.              g.FillEllipse(Brushes.Red, new Rectangle(p.X - 2, p.Y - 2, 4, 4));

  93.          }
  94.          //分针部分
  95.          void DrawMinutePointer(Graphics g)
  96.          {
  97.              Point center = new Point(190, 160);
  98.              Point p;
  99.              p = GetPosition(date.Minute, center, 120);
  100.              g.DrawLine(Pens.Blue, center, p);
  101.              //g.FillEllipse(Brushes.Blue, new Rectangle(p.X - 4, p.Y - 4, 8, 8));
  102.          }
  103.          //时针部分
  104.          Point GetHourPosition(Point center, double radius)
  105.          {
  106.              Point p = new Point();
  107.              int h = date.Hour;
  108.              int m = date.Minute;
  109.              double t = Math.PI / 6 * h + Math.PI / 360 * m;
  110.              double x = center.X + radius * Math.Sin(t);
  111.              double y = center.Y - radius * Math.Cos(t);
  112.              p.X = (int)x;
  113.              p.Y = (int)y;
  114.              return p;
  115.          }
  116.          void DrawHourPointer(Graphics g)
  117.          {
  118.              Point center = new Point(190, 160);
  119.              Point p = GetHourPosition(center, 100);
  120.              g.DrawLine(new Pen(Brushes.Black, 2), center, p);
  121.              //去指针圆尖 http://www.cnblogs.com/sosoft/
  122.              // g.FillEllipse(Brushes.Black,
  123.              //              new Rectangle(p.X - 6, p.Y - 6, 12, 12));
  124.              g.FillEllipse(Brushes.YellowGreen,
  125.              new Rectangle(center.X - 6, center.Y - 6, 12, 12));


  126.          }

  127.      }
  128. }
复制代码
兼容Excel数据和操作,更灵活易定制. 支持WinForms, ASP.NET, WinRT等平台

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1 很给力!给力的很~!

查看全部评分

4 个回复

倒序浏览
赞。。。先学习下。。
回复 使用道具 举报
搞得不错,学习了
回复 使用道具 举报
版主就是版主就是不一样!
回复 使用道具 举报
不明觉厉啊,厉害会火!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马