HybridClock 详解

本文详细解析了HybridClock程序的实现原理,包括秒针、分针与时针的角度计算方法及TextBlock设置技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                          HybridClock  详解

 

Charles Petzold在Ch8中介绍了旋转和偏移的使用,最经典的就是HybridClock程序了,说实话,他的所有的程序的思想几乎都可以在《Windows 程序设计》中找到哦,好了,看看他是怎么写的吧;

 

先是最核心的部分,秒针/分针/时针 的角度计算:

 

 

咋一看作者的代码有点难懂,其实这是他化简后的代码,这样可以减少cpu计算量;

我把它还原为最初的思想:

对于秒针:60秒为360度,按比例就是seconds/60*360;

       angle = (dt.Second / 60.0) * 360; //就相当于dt.Second*6

对于分针:60分钟为360度,按比例就是minutes/60*360;

       angle = (dt.Minute / 60.0) * 360 + angle/360.0/60.0*360; //后半部对于angle/360.0就是计算多少分钟,然后/60.0看看是60分钟的几分之一,然后*360计算角度,化简后就是:angle = 6 * dt.Minute + angle / 60;

对于时针:12小时为360度,按比例就是hours/12*360

       angle = (((dt.Hour + angle / 360.0) % 12) / 12.0) * 360 ;   //式子中的angle/360.0是计算分钟转为多少个小时,然后同上,化简过程:

          

 

//搞定了角度计算,然后就基本ok了。

 

接下来是TextBlock设置 :

先看看Charles Petzold:

 

 

我觉得他的代码是非常好的,考虑到了美观,但是我觉得还是越简单越好吧:

 

 

看看效果:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值