代码如下:

 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. 【读书笔记】Programming Entity Framework CodeFirst -- 初步认识

    以下是书<Programming Entity Framework Code First>的学习整理,主要是一个整体梳理. 一.模型属性映射约定 1.通过 System.Component ...

  2. TW2015技术雷达中文版发布

    今天thoughtworks 2015新版技术雷达pdf发布了,你可以从这里下载http://engage.thoughtworks.com/HQ0000Q0QOf5pE70nbD00GP,在这里你可 ...

  3. 为什么一定要杀掉病毒?---帮一位老师解决MyDocument.exe优盘文件夹图标病毒问题

    最近一位大学老师给我抱怨了一个她遇到的烦恼,一直在纠结,生活都被打乱了,事情大概是这样的: 她的优盘里辛辛苦苦弄好备课文件,放在了优盘里,可是每次上课时,就是找不到文件.有时好多文件都被修改了,非常烦 ...

  4. BIT祝威博客汇总(Blog Index)

    +BIT祝威+悄悄在此留下版了个权的信息说: 关于硬件(Hardware) <穿越计算机的迷雾>笔记 继电器是如何成为CPU的(1) 继电器是如何成为CPU的(2) 关于操作系统(Oper ...

  5. Java连接Oracle数据库开发银行管理系统【二、设计篇】

    一.总体分析     此系统的实现并不难,但是如何更好的设计出实现方式还是需要更深入的分析,例如:如果再增加其他功能,是不是需要变动的 代码很少,只是直接再增加一点功能就可以了呢?如果使用的不是Ora ...

  6. redis中使用redis-dump导出、导入、还原数据实例

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/109.html?1455861283 redis的备份和还原,借助了第三方 ...

  7. 树形打印lua table表

    为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...

  8. 理解 Lua 的那些坑爹特性

    按:最近看到了依云的文章,一方面,为Lua被人误解而感到十分难过,另一方面,也为我的好友, 依云没有能够体会到Lua的绝妙和优雅之处而感到很遗憾,因此我写了这篇文章,逐条款地说明了 依云理解中出现的一 ...

  9. atitit。wondows 右键菜单的管理与位置存储

    atitit.wondows 右键菜单的管理与位置存储 原理 .这样的功能称为Windows外壳扩展(Shell Extensions) 1 常用右键菜单 atiContentMenu1 通用tool ...

  10. 让DB2跑得更快——DB2内部解析与性能优化

    让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!)  洪烨著 2013年10月出版 定价:7 ...