CSharpQuartz

GDI绘制时钟效果,与系统时间保持同步,基于Winform

…衆ロ難τιáo~ 提交于 2020-01-07 07:38:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是直接在Winform的基础上进行绘制的。接下来,我对时钟进行了封装,封装成一个名为CSharpQuartz的类,效果如下: 这是把时钟封装后,实现的一种效果,CSharpQuartz内部开辟了一个线程,与系统时间,保持同步,每秒刷新一次。所采用的技术也就是GDI和多线程及事件委托。把时钟封装成对象后,还为其添加了OnChanged事件,用于对象提供外部 处理之用。接下来就简单的说下,做次小程序的一些准备工作吧。 这也是最近偶尔听到有朋友问怎样做时钟的事,想来,其实也简单的,只是需要一些耐心和细心,这里主要还利用一些三角函数进行计算。上图看似很简单,其实也有很多小细节需要注意。我就把大致绘制的过程简单说下: 首先,我们需要定义一个圆,来作为时钟的轮廓,这里是通过设置时钟的直径及winform的宽高,来计算出时钟在窗体居中的位置。绘制圆的代码就更简单了 float w = 300f, h = 300f; float x = (this.Width - w) / 2; float y = (this.Height - h) / 2; float d = w;//直径 float r = d / 2;//半径 graphics.DrawEllipse(pen, new RectangleF(x, y, w, h))