您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:22 来源:本站原创

原贴地址: http://bbs.bc-cn.net/bbs/dispbbs.asp?boardID=6&ID=18083&page=1

'/////////////////////////////////
逆风编程精品
'小闹钟示例
'Written By griefforyou
'在窗体中添加一个Timer控件,将Interval设为1000以下。
'////////////////////////////////

Option Explicit

Const PI = 3.1415926
Dim BaseX As Integer, BaseY As Integer, R As Integer
Dim r1 As Integer, r2 As Integer, r3 As Integer

Private Sub Form_Load()
Me.ScaleMode = 3
Me.AutoRedraw = True

If Me.Width < 3000 Then Me.Width = 3000
If Me.Height < 3000 Then Me.Height = 3000

End Sub

Private Sub Init()
Dim i As Integer

BaseX = Me.ScaleWidth / 2
BaseY = Me.ScaleHeight / 2

R = IIf(BaseX > BaseY, BaseY * 0.8, BaseY * 0.8)
r1 = R * 0.2
r2 = R * 0.1
r3 = R * 0.05

For i = 0 To 360 Step 6

If i Mod 30 = 0 Then'时
Me.DrawWidth = 2
DrawLine BaseX (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180), BaseX (R - 8) * Sin(i * PI / 180), BaseY - (R - 8) * Cos(i * PI / 180), 3
Else'分
Me.DrawWidth = 2
Me.PSet (BaseX (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180))
End If
Next

Me.DrawWidth = 1
Me.Circle (BaseX, BaseY), R
End Sub

'绘制指针
Private Sub DrawClock()
Dim Second As Integer
Dim Minute As Integer
Dim Hours As Integer

Second = DatePart("s", Time)
Minute = DatePart("n", Time)
Hours = DatePart("h", Time)
If Hours > 12 Then
Hours = Hours - 12
End If

Me.DrawWidth = 1
Me.Circle (BaseX, BaseY), 4

DrawLine BaseX - r1 * Sin(Second * PI / 30), BaseY r1 * Cos(Second * PI / 30), BaseX (R - 10) * Sin(Second * PI / 30), BaseY - (R - 10) * Cos(Second * PI / 30), 0
DrawLine BaseX - r2 * Sin(Minute * PI / 30), BaseY r2 * Cos(Minute * PI / 30), BaseX R * 0.8 * Sin(Minute * PI / 30), BaseY - R * 0.8 * Cos(Minute * PI / 30), 1
DrawLine BaseX - r3 * Sin((Hours Minute / 60) * PI / 6), BaseY r3 * Cos((Hours Minute / 60) * PI / 6), BaseX R * 0.6 * Sin((Hours Minute / 60) * PI / 6), BaseY - R * 0.6 * Cos((Hours Minute / 60) * PI / 6), 2
End Sub

'画线函数
Private Sub DrawLine(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer, Flag As Integer)
Static OldSX1 As Integer, OldSX2 As Integer, OldSY1 As Integer, OldSY2 As Integer
Static OldMX1 As Integer, OldMX2 As Integer, OldMY1 As Integer, OldMY2 As Integer
Static OldHX1 As Integer, OldHX2 As Integer, OldHY1 As Integer, OldHY2 As Integer
Select Case Flag
Case 0
Me.DrawWidth = 1
Me.Line (OldSX1, OldSY1)-(OldSX2, OldSY2), Me.BackColor
Me.Line (x1, y1)-(x2, y2)
OldSX1 = x1
OldSX2 = x2
OldSY1 = y1
OldSY2 = y2
Case 1
Me.DrawWidth = 2
Me.Line (OldMX1, OldMY1)-(OldMX2, OldMY2), Me.BackColor
Me.Line (x1, y1)-(x2, y2)
OldMX1 = x1
OldMX2 = x2
OldMY1 = y1
OldMY2 = y2
Case 2
Me.DrawWidth = 3
Me.Line (OldHX1, OldHY1)-(OldHX2, OldHY2), Me.BackColor
Me.Line (x1, y1)-(x2, y2)
OldHX1 = x1
OldHX2 = x2
OldHY1 = y1
OldHY2 = y2
Case Else
Me.Line (x1, y1)-(x2, y2)
End Select
End Sub

Private Sub Form_Resize()
Me.Cls
Call Init
End Sub

Private Sub Timer1_Timer()
Call DrawClock
End Sub

相关文章

VB 从零开始编外挂(十二)
FSO对象模型在VB中的应用
动态改变屏幕设置
VB应用程序的启动与退出设计
Viusal Basic程序员的.NET泛型编程
开启文件属性窗口
PING一个IP地址(向它发送一个数据包并等待
利用两种简易方法实现直接打开一个文件
一个自动更换墙纸的小软件
在VB中如何得到网络中某一台电脑(电脑名)的
移动文件到回收站
用VB创建Windows快捷方式
用VB6编写强力的windows隐藏引擎
Whois 示例程序
VB实用编程两例
VB Access开发的登录程序
一个用记录集填充表格的函数
用VB实现“ICQ”式的启动欢迎画面
VB邮件检查程序
自己的IE——用VB制作浏览器

相关评论


本文章所属分类:首页 VB

  热门关键字: