65.9K
CodeProject 正在变化。 阅读更多。
Home

模拟时钟

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.35/5 (12投票s)

2006年12月7日

1分钟阅读

viewsIcon

61286

downloadIcon

1665

一篇关于使用绘图和数学创建一个简单的模拟时钟的文章。

Sample Image

引言

这是一个基本的模拟时钟,使用余弦、正弦、角度以及窗体的宽高比来绘制圆圈并确定刻度和指针的位置。这是我在该网站上的第一次提交,希望对某人有所帮助。代码有详细的注释,并且还提供了一个演示下载。

背景

我第一次编写这段代码是在 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

© . All rights reserved.