C#实现的GDI+时钟

using System;
002using System.Data;
003using System.Drawing;
004using System.Drawing.Drawing2D;
005class Clock
006{
007        private Point mickeyMouse = new Point(0, 0);
008        private void Form1_Paint(object sender, PaintEventArgs e)
009        {
010            DrawClock(e.Graphics);
011            timer1.Start();
012        }
013 
014        private void DrawClock(Graphics g)
015        {
016            ///centre(120, 130);
017            Rectangle outRect = new Rectangle(0, 0, 240, 260);
018            Rectangle midRect = new Rectangle(7, 7, 226, 246);
019            Rectangle inRect = new Rectangle(10, 10, 220, 240);
020  
021            LinearGradientBrush outlBlueBrush = new LinearGradientBrush(outRect, Color.FromA#000064,
022                Color.FromA#0000ff, LinearGradientMode.BackwardDiagonal);
023            LinearGradientBrush midlBlueBrush = new LinearGradientBrush(midRect, Color.FromA#0000ff,
024                Color.FromA#000064, LinearGradientMode.BackwardDiagonal);
025            LinearGradientBrush inlBlueBrush = new LinearGradientBrush(inRect, Color.FromA#000064,
026               Color.FromA#0000ff, LinearGradientMode.BackwardDiagonal);
027  
028            g.FillEllipse(outlBlueBrush, outRect);
029            g.FillEllipse(midlBlueBrush, midRect);
030            g.FillEllipse(inlBlueBrush, inRect);
031            outlBlueBrush.Dispose();
032            midlBlueBrush.Dispose();
033            inlBlueBrush.Dispose();
034            Font myFont = new Font("Arial", 20, FontStyle.Bold);
035            SolidBrush whiteBrush = new SolidBrush(Color.White);
036            g.DrawString("12", myFont, whiteBrush, 100, 10);
037            g.DrawString("6", myFont, whiteBrush, 110, 223);
038            g.DrawString("3", myFont, whiteBrush, 210, 120);
039            g.DrawString("9", myFont, whiteBrush, 10, 120);
040            g.DrawString("1", myFont, whiteBrush, 160, 26);
041            g.DrawString("2", myFont, whiteBrush, 194, 64);
042            g.DrawString("5", myFont, whiteBrush, 156, 210);
043            g.DrawString("4", myFont, whiteBrush, 192, 174);
044            g.DrawString("11", myFont, whiteBrush, 55, 28);
045            g.DrawString("10", myFont, whiteBrush, 22, 66);
046            g.DrawString("7", myFont, whiteBrush, 64, 210);
047            g.DrawString("8", myFont, whiteBrush, 28, 174);
048            myFont.Dispose();
049            whiteBrush.Dispose();
050            //DateTime;
051            g.TranslateTransform(120, 130, MatrixOrder.Append);
052            Pen hourPen = new Pen(Color.White, 6);
053            hourPen.SetLineCap(LineCap.RoundAnchor, LineCap.ArrowAnchor, DashCap.Flat);
054            Pen minutePen = new Pen(Color.White, 4);
055            minutePen.SetLineCap(LineCap.RoundAnchor, LineCap.ArrowAnchor, DashCap.Flat);
056            Pen secondPen = new Pen(Color.Red, 2);
057            int sec = DateTime.Now.Second;
058            int min = DateTime.Now.Minute;
059            int hour = DateTime.Now.Hour;
060            double secondAngle = 2.0 * Math.PI * sec / 60.0;
061            double minuteAngle = 2.0 * Math.PI * (min + sec / 60.0) / 60.0;
062            double hourAngle = 2.0 * Math.PI * (hour + min / 60.0) / 12.0;
063            Point centre = new Point(0, 0);
064            Point hourHand = new Point((int)(40 * Math.Sin(hourAngle)),
065            (int)(-40 * Math.Cos(hourAngle)));
066            g.DrawLine(hourPen, centre, hourHand);
067  
068            Point minHand = new Point((int)(80 * Math.Sin(minuteAngle)),
069            (int)(-80 * Math.Cos(minuteAngle)));
070            g.DrawLine(minutePen, centre, minHand);
071  
072            Point secHand = new Point((int)(80 * Math.Sin(secondAngle)),
073            (int)(-80 * Math.Cos(secondAngle)));
074            g.DrawLine(secondPen, centre, secHand);
075  
076            hourPen.Dispose();
077            minutePen.Dispose();
078            secondPen.Dispose();
079        }
080        private void timer1_Tick(object sender, EventArgs e)
081        {
082            this.Invalidate();             
083        }
084        private void hideToolStripMenuItem_Click(object sender, EventArgs e)
085        {
086            if (contextMenuStrip1.Items[0].ToString() == "Hide")
087            {
088                this.Hide();
089                contextMenuStrip1.Items[0].Text = "Show";
090                return;
091            }
092  
093            if (contextMenuStrip1.Items[0].ToString() == "Show")
094            {
095                this.Show();
096                contextMenuStrip1.Items[0].Text = "Hide";
097                return;
098            }
099        }
100        private void Form1_MouseDown(object sender, MouseEventArgs e)
101        {
102            mickeyMouse = new Point(-e.X, -e.Y);
103        }
104        private void Form1_MouseMove(object sender, MouseEventArgs e)
105        {
106            if (e.Button == MouseButtons.Left)
107            {
108                Point mousePos = Control.MousePosition;
109                mousePos.Offset(mickeyMouse.X, mickeyMouse.Y);
110                Location = mousePos;
111            }
112        }
113        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
114        {
115            if (contextMenuStrip1.Items[0].ToString() == "Show")
116            {
117                this.Show();
118                contextMenuStrip1.Items[0].Text = "Hide";
119                return;
120            }
121        }
122}
posted @ 2012-01-29 21:13  ChaunceyHao  阅读(401)  评论(0)    收藏  举报