代码如下:

 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", );
Graphics g = CreateGraphics();
g.DrawString(date.ToString(), font, Brushes.Firebrick, , );
g.DrawString(date.DayOfWeek.ToString(), font, Brushes.Red, , );
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 / * s);
double y = center.Y - radius * Math.Cos(Math.PI / * s);
p.X = (int)x;
p.Y = (int)y;
return p;
} void DrawDial(Graphics g)//外圆及刻度
{
int n;
Rectangle rect = new Rectangle(, , , );
//g.FillEllipse(Brushes.White, 40, 10, 300, 300);
g.DrawEllipse(new Pen(Color.Black, ), rect);
Point p1, p2;
Point center = new Point(, );
for (n = ; n < ; n++)
{
p1 = GetPosition(n, center, );
if (n % == )
{
p2 = GetPosition(n, center, );
g.DrawLine(new Pen(Color.Black, ), p1, p2);
}
else
{
p2 = GetPosition(n, center, );
g.DrawLine(Pens.Red, p1, p2);
}
}
Font font = new Font("Times New Roman", );
n = ;
p1 = GetPosition(n, center, );
g.DrawString("XII", font, Brushes.Black, p1.X - , p1.Y);
n += ;
p1 = GetPosition(n, center, );
g.DrawString("III", font, Brushes.Black, p1.X - , p1.Y - );
n += ;
p1 = GetPosition(n, center, );
g.DrawString("VI", font, Brushes.Black, p1.X - , p1.Y - );
n += ;
p1 = GetPosition(n, center, );
g.DrawString("IX", font, Brushes.Black, p1.X, p1.Y - );
}
//秒针部分
void DrawSecondPointer(Graphics g)
{
Point center = new Point(, );
Point p;
p = GetPosition(date.Second, center, );
g.DrawLine(Pens.Red, center, p);
g.FillEllipse(Brushes.Red, new Rectangle(p.X - , p.Y - , , )); }
//分针部分
void DrawMinutePointer(Graphics g)
{
Point center = new Point(, );
Point p;
p = GetPosition(date.Minute, center, );
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 / * h + Math.PI / * 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(, );
Point p = GetHourPosition(center, );
g.DrawLine(new Pen(Brushes.Black, ), center, p);
//去指针圆尖 http://www.cnblogs.com/sosoft/
// g.FillEllipse(Brushes.Black,
// new Rectangle(p.X - 6, p.Y - 6, 12, 12));
g.FillEllipse(Brushes.YellowGreen,
new Rectangle(center.X - , center.Y - , , )); } }
}

winform时钟c#代码的更多相关文章

  1. linux新内核的时钟机制代码

    http://blog.chinaunix.net/uid-22810130-id-384173.html 如果说cfs是linux的一个很有创意的机制的话,那么linux中另一个创意就是nohz,我 ...

  2. Maxim实时时钟芯片设计指南5791-关于编写健壮的实时时钟控制代码的提示

    用DS12C887设计一个万年历,虽然反复查看说明书,还是出各种的错误. 因此,从美信官网查询资料,翻译的不太通,凑合着对照看. 原文链接 Tips for Writing Bulletproof R ...

  3. C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...

  4. Winform远程更新代码

    本软件具备以下形: 1.通过http形式在客户端更新winform代码文件 2.在服务端通过软件生成xml配置文件,客户端通过比对xml配置文件来更新代码文件. 服务端: 在服务器上建立一个IIS发布 ...

  5. Winform 中写代码布局中遇到的控件遮盖问题

    在winform中编程时,需要动态向主窗体中增加菜单栏和用户控件,菜单栏需要设置DockStyle为Top ,而设置用户控件的DockStyle为Fill,之后在加载的时候,出现了菜单栏遮盖用户控件的 ...

  6. Winform中使用代码编写Button按钮的点击事件

    场景 一般在进行Winform窗体开发时都会拖拽一个Button,然后双击进入Button按钮的点击事件中,进行 点击事件的编写. 如果窗体上事先没有Button按钮,是在代码中生成的Button按钮 ...

  7. echarts制作html和JavaScript的时钟和代码分析与注释

    1.效果图 2.说明: 2.1 代码是大神制作的,我进行修改,感谢大神,原创属于他. 2.2 我对代码进行分析.注释.整理,增加代码的可读性. 2.3 通过上述自己的工作,自己也能熟悉相关的JavaS ...

  8. C# WinForm登录窗口代码

    Main窗体为应用程式主窗体,Login为登录窗体.均为SDI窗体.     两种实现方式如下: 1.应用程式入口放在Login窗体,在Login窗体实现登录机制,验证通过则创建Main窗体的实例,并 ...

  9. Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic

    场景 使用DevExpress的EditText控件时,需要限制其输入类型为数字. 正常来说是窗体上拖拽一个TextEdit,然后在设计窗口点击小三角,选择Change Mask 但是如果说TextE ...

随机推荐

  1. 犀利的background-clip:text,实现K歌字幕效果

    今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text.利用此属性值可以制作出很神奇的效果.可惜只有chrome支持,不过今天可以先来玩玩这个属性. 先来介 ...

  2. 如何设计一门语言(八)——异步编程和CPS变换

    关于这个话题,其实在(六)里面已经讨论了一半了.学过Haskell的都知道,这个世界上很多东西都可以用monad和comonad来把一些复杂的代码给抽象成简单的.一看就懂的形式.他们的区别,就像用js ...

  3. 三天学会HTML5 之第一天

    引言 HTML5 一直是非常热门的话题,因此此系列文章主要从一些基本功能开始讲起,逐步深入了解HTML5的新概念. 首先了解一些基本的术语和概念. SGML, HTML,XML三者之间的区别 Doc类 ...

  4. Open Source Cassandra Gitbook for Developer

    Just released an open source Cassandra Gitbook for developer. http://teddymaef.github.io/learncassan ...

  5. location.href 一个小注意

    项目里有location.href = '#......'这一类的代码,一直以为某处做了特殊处理,变成前面有主机名的URL,看架构源码也没找到这种处理.今天灵光一现,自己是被JS高程将解位置方法那节给 ...

  6. 每天一个linux命令(61):wget命令

    Linux系统​中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP ...

  7. 开发者最常用的 8 款 Sublime Text 3 插件

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0228/177.html?1456925631Sublime Text作为一个尽为人知的代码编辑器, ...

  8. SQL中group by的用法

    group by即按照给定字段对结果集进行分组,从字面意义上理解就是根据"by"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个" ...

  9. Atitit usrQBK1600 技术文档的规范标准化解决方案

    Atitit usrQBK1600 技术文档的规范标准化解决方案 1.1. Keyword关键词..展关键词,横向拓展比较,纵向抽象细化拓展知识点1 1.2. 标题必须有高大上词汇,参考文章排行榜,1 ...

  10. HashMap和Hashtable的区别 源码分析

    一:以前只知道HashMap和HashTable区别,死记硬背的记住HashMap 允许key value为空 而Hashtable 不允许为空 HashMap线程是非线程安全的,而Hashtable ...