模拟时钟






4.35/5 (12投票s)
2006年12月7日
1分钟阅读

61286

1665
一篇关于使用绘图和数学创建一个简单的模拟时钟的文章。
引言
这是一个基本的模拟时钟,使用余弦、正弦、角度以及窗体的宽高比来绘制圆圈并确定刻度和指针的位置。这是我在该网站上的第一次提交,希望对某人有所帮助。代码有详细的注释,并且还提供了一个演示下载。
背景
我第一次编写这段代码是在 QB 4.5 时代,后来将其转换为 Flash MX。我有一天休息时感到无聊,而且真的不想处理我正在进行的其他项目,所以为了重温旧时光而做了这个。希望你喜欢。
使用代码
我将主要的绘图分成不同的 Sub
来使代码更容易理解和跟踪。
调用的主要子程序是 Draw_Graphics()
,它调用其他 Sub
来进行绘图。我使用 Bitmap
对象和 Graphics
对象来绘制图像,然后将图像推送到窗体以防止闪烁。
Private Sub Draw_Graphics()
'******************************************************************
'******** The drawing sub which has the individual ********
'******** subs in it for easier understand- ********
'******** ing. First we will draw the clock base, ********
'******** then the face, on to the markers, ********
'******** then the date and time on the face, ********
'******** and finally the hands of the clock. ********
'******************************************************************
Draw_Clock_Base()
Draw_Clock_Face()
Draw_Clock_Markers()
Draw_Clock_DateTime()
Draw_Clock_Hands()
End Sub
这些对象和变量在窗体的完整范围内使用。其他变量在 Sub
内部使用。
Dim bm As Bitmap
Dim g As Graphics
Dim PI As Double = 3.14159
Dim XC, YC, X, Y, R, OldSec As Integer
Dim Theta, AspectRatio As Double
关注点
我不太擅长图形编程,所以在处理 DrawPolygon
命令时,它总是想将最后一个位置默认设置为 (0,0),而且我不知道为什么,所以我最终手动绘制了线条。如果有人有任何建议,请告诉我 drekow@drekow.com。