手机
当前位置:查字典教程网 >编程开发 >C#教程 >c# winform时钟的实现代码
c# winform时钟的实现代码
摘要:代码如下:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem....

代码如下:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Simpclock

{

public partial class Form1 : Form

{

DateTime date = DateTime.Now;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

date = DateTime.Now;

}

private void OnPaint(object sender, PaintEventArgs e)

{

Font font = new Font("Times New Roman", 20);

Graphics g = CreateGraphics();

g.DrawString(date.ToString(), font, Brushes.Firebrick, 10,330 );

g.DrawString(date.DayOfWeek.ToString(), font, Brushes.Red, 250, 330);

DrawDial(g);

DrawSecondPointer(g);

DrawMinutePointer(g);

DrawHourPointer(g);

}

//刷新时间

private void OnTime(object sender, EventArgs e)

{

date = DateTime.Now;

Invalidate();

}

//画钟表

//表盘部分

Point GetPosition(int s, Point center, double radius)//定位

{

Point p = new Point();

double x = center.X + radius * Math.Sin(Math.PI / 30 * s);

double y = center.Y - radius * Math.Cos(Math.PI / 30 * s);

p.X = (int)x;

p.Y = (int)y;

return p;

}

void DrawDial(Graphics g)//外圆及刻度

{

int n;

Rectangle rect = new Rectangle(40, 10, 300, 300);

//g.FillEllipse(Brushes.White, 40, 10, 300, 300);

g.DrawEllipse(new Pen(Color.Black, 3), rect);

Point p1, p2;

Point center = new Point(190, 160);

for (n = 0; n < 60; n++)

{

p1 = GetPosition(n, center, 150);

if (n % 5 == 0)

{

p2 = GetPosition(n, center, 130);

g.DrawLine(new Pen(Color.Black, 2), p1, p2);

}

else

{

p2 = GetPosition(n, center, 140);

g.DrawLine(Pens.Red, p1, p2);

}

}

Font font = new Font("Times New Roman", 20);

n = 0;

p1 = GetPosition(n, center, 130);

g.DrawString("XII", font, Brushes.Black, p1.X - 25, p1.Y);

n += 15;

p1 = GetPosition(n, center, 130);

g.DrawString("III", font, Brushes.Black, p1.X - 35, p1.Y - 15);

n += 15;

p1 = GetPosition(n, center, 130);

g.DrawString("VI", font, Brushes.Black, p1.X - 20, p1.Y - 30);

n += 15;

p1 = GetPosition(n, center, 130);

g.DrawString("IX", font, Brushes.Black, p1.X, p1.Y - 15);

}

//秒针部分

void DrawSecondPointer(Graphics g)

{

Point center = new Point(190, 160);

Point p;

p = GetPosition(date.Second, center, 130);

g.DrawLine(Pens.Red, center, p);

g.FillEllipse(Brushes.Red, new Rectangle(p.X - 2, p.Y - 2, 4, 4));

}

//分针部分

void DrawMinutePointer(Graphics g)

{

Point center = new Point(190, 160);

Point p;

p = GetPosition(date.Minute, center, 120);

g.DrawLine(Pens.Blue, center, p);

//g.FillEllipse(Brushes.Blue, new Rectangle(p.X - 4, p.Y - 4, 8, 8));

}

//时针部分

Point GetHourPosition(Point center, double radius)

{

Point p = new Point();

int h = date.Hour;

int m = date.Minute;

double t = Math.PI / 6 * h + Math.PI / 360 * m;

double x = center.X + radius * Math.Sin(t);

double y = center.Y - radius * Math.Cos(t);

p.X = (int)x;

p.Y = (int)y;

return p;

}

void DrawHourPointer(Graphics g)

{

Point center = new Point(190, 160);

Point p = GetHourPosition(center, 100);

g.DrawLine(new Pen(Brushes.Black, 2), center, p);

//去指针圆尖

// g.FillEllipse(Brushes.Black,

// new Rectangle(p.X - 6, p.Y - 6, 12, 12));

g.FillEllipse(Brushes.YellowGreen,

new Rectangle(center.X - 6, center.Y - 6, 12, 12));

}

}

}

【c# winform时钟的实现代码】相关文章:

C#编写Windows服务实例代码

c# 曲线图生成代码

C# 实现简单打印的实例代码

winform模拟鼠标按键的具体实现

C# 系统热键注册实现代码

winform下实现win7 Aero磨砂效果实现代码

winfrom 打印表格 字符串的封装实现代码 附源码下载

C# Linq读取XML文件的实例

C# 无需COM组件创建快捷方式的实现代码

解析c#显示友好时间的实现代码

精品推荐
分类导航