vb.net小时钟程序的简单介绍

用VB.net做一个时间计时器

'添加一个label标签名字label1 用来显示时间

成都创新互联10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对成都航空箱等多个方面拥有丰富的网站推广经验的网站建设公司。

'再添加一个timer控件 名字timer1 interval属性=1000 用来计时

'窗体添加代码

Dim t As Date '用来记录时间

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _

System.EventArgs) Handles Timer1.Tick

t = t.AddSeconds(1)

Label1.Text = "登录时间:" t.TimeOfDay.ToString

End Sub

求高手用vb.net做一个倒计时程序。

画面添加textbox1 timer1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Timer1.Interval = 1000

TextBox1.Text = "2011/12/07 10:35:00"

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If IsDate(TextBox1.Text) = True Then

Timer1.Start()

End If

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

If Format(Now, "yyyy/MM/dd hh:mm:ss") = TextBox1.Text Then

MsgBox("It's time to go")

Timer1.Stop()

End If

End Sub

用VB编一个钟表,表针运动程序怎么编?

这个比较麻烦,我曾经写过这么个程序片段,现在贴上来,代码比较复杂

Shape1是时钟的一个框,是Shape控件,设置 Height 1455 Width 1575

LineHour,LineMinute,LineSecond分别为时,分,秒针,为Line控件

Label3,Label6,Label9,Label12为Label控件,分别为3.6.912点的显示数字

再画个Timer控件,Interval设置为1000

以上控件位置随便放,代码里调整

Form_Load事件里写

Shape1.Top = 100

Shape1.Left = Me.Width - 1800

LineHour.X1 = Shape1.Left + Shape1.Width / 2

LineHour.Y1 = Shape1.Top + Shape1.Height / 2

LineMinute.X1 = Shape1.Left + Shape1.Width / 2

LineMinute.Y1 = Shape1.Top + Shape1.Height / 2

LineSecond.X1 = Shape1.Left + Shape1.Width / 2

LineSecond.Y1 = Shape1.Top + Shape1.Height / 2

Label3.Left = Shape1.Left + Shape1.Width - Label3.Width - 200

Label3.Top = Shape1.Top + (Shape1.Height - Label3.Height) / 2

Label6.Left = Shape1.Left + (Shape1.Width - Label6.Width) / 2

Label6.Top = Shape1.Top + Shape1.Height - Label6.Height + 20

Label9.Left = Shape1.Left + 200

Label9.Top = Shape1.Top + (Shape1.Height - Label9.Height) / 2

Label12.Left = Shape1.Left + (Shape1.Width - Label12.Width) / 2

Label12.Top = Shape1.Top + 100

Timer事件里写

'利用Label显示数字

If Shape1.Visible True Then Shape1.Visible = True

If LineHour.Visible True Then LineHour.Visible = True

If LineMinute.Visible True Then LineMinute.Visible = True

If LineSecond.Visible True Then LineSecond.Visible = True

If Label3.Visible True Then Label3.Visible = True

If Label6.Visible True Then Label6.Visible = True

If Label9.Visible True Then Label9.Visible = True

If Label12.Visible True Then Label12.Visible = True

Dim cx As Single, cy As Single '圆心坐标

cx = Shape1.Left + Shape1.Width / 2

cy = Shape1.Top + Shape1.Height / 2

'利用Line控件绘制指针

LineSecond.X2 = LineSecond.X1 + Sin(CLng(Second(Now)) / 60 * 2 * pi) * 480

LineSecond.Y2 = LineSecond.Y1 - Cos(CLng(Second(Now)) / 60 * 2 * pi) * 480

LineMinute.X2 = LineMinute.X1 + Sin(CLng(Minute(Now)) / 60 * 2 * pi) * 360

LineMinute.Y2 = LineMinute.Y1 - Cos(CLng(Minute(Now)) / 60 * 2 * pi) * 360

LineHour.X2 = LineHour.X1 + Sin((CLng(Hour(Now)) + CLng(Minute(Now)) / 60) / 12 * 2 * pi) * 240

LineHour.Y2 = LineHour.Y1 - Cos((CLng(Hour(Now)) + CLng(Minute(Now)) / 60) / 12 * 2 * pi) * 240

'利用Line方法绘制刻度

Me.Line (cx + 250, cy - 433.012701892219)-(cx + 300, cy - 519.615242270663)

Me.Line (cx + 433.012701892219, cy - 250)-(cx + 519.615242270663, cy - 300)

Me.Line (cx + 433.012701892219, cy + 250)-(cx + 519.615242270663, cy + 300)

Me.Line (cx + 250, cy + 433.012701892219)-(cx + 300, cy + 519.615242270663)

Me.Line (cx - 250, cy + 433.012701892219)-(cx - 300, cy + 519.615242270663)

Me.Line (cx - 433.012701892219, cy + 250)-(cx - 519.615242270663, cy + 300)

Me.Line (cx - 433.012701892219, cy - 250)-(cx - 519.615242270663, cy - 300)

Me.Line (cx - 250, cy - 433.012701892219)-(cx - 300, cy - 519.615242270663)

vb.net开发简单的时钟程序??高手救救我!

Hand类的代码:

Public MustInherit Class Hand

Protected gp As GraphicsPath = New GraphicsPath()

Protected gpBase As GraphicsPath = Nothing

Protected midX As Integer = 150 ‘默认的窗体

Protected midY As Integer = 150 ‘中心位置

‘构造器,得到窗体中心位置

Public Sub New(ByVal theForm As Form1)

midX = (theForm.ClientRectangle.Left + theForm.ClientRectangle.Right) / 2

midY = (theForm.ClientRectangle.Top + theForm.ClientRectangle.Bottom) / 2

End Sub

MustOverride Sub Transform(ByVal d As DateTime)

‘绘制指针路径

Overridable Sub Draw(ByVal g As Graphics)

Dim aPen As Pen = New Pen(Brushes.Black, 4F)

g.DrawPath(aPen, gp)

g.FillPath(Brushes.Black, gp)

aPen.Dispose()

End Sub

‘使用矩阵实现路径(gp)的旋转

Public Sub Rotate(ByVal angle As Double)

gp = CType(gpBase.Clone(), GraphicsPath)

Dim mTransform As Matrix = New Matrix()

mTransform.RotateAt(CType(angle,Single),NewPointF(midX,midY))

gp.Transform(mTransform)

End Sub

End Class

为了节省篇幅,上面的代码省略了引入命名空间的语句。

下面是分针(MinuteHand)类的定义:

Public Class MinuteHand

Inherits Hand

‘构造器,生成绘制分针的路径(gp)

Public Sub New(ByVal myForm As Form1)

MyBase.New(myForm)

gp.AddLine(midX, midY, midX, 45)

gp.AddLine(midX, 45, midX - 3, 50)

gp.AddLine(midX - 3, 50, midX + 3, 50)

gp.AddLine(midX + 3, 50, midX, 45)

gpBase = CType(gp.Clone(), GraphicsPath)

End Sub

‘Transform方法取得系统当前时间,并旋转时钟指针。

Public Overrides Sub Transform(ByVal d As DateTime)

Dim minuteTime As Double = (CDbl(d.Minute) + CDbl(d.Second / 60))

Dim angle As Double = (CDbl(minuteTime) / 60) * 360

Rotate(angle)

End Sub

End Class

对所有的指针旋转的方法都是相同的,因此在基类中实现。由于时针和秒针的实现与分针相似,所不同者,只在于构造器中绘制的指针路径不同和Transform方法中转动的角度不同,在这里就不在赘述了。

另外还需要提一下的是画时钟表面的代码,时钟表面用ClockFace类来实现。这个类首先画一个圆代表时钟,然后画上米老鼠的图案,最后在相应的位置画上数字1~12代表12个小时。

Public Sub Draw(ByVal g As Graphics)

DrawClockFace(g)

DrawImage(g)

DrawNumbers(g)

DrawPin(g)

End Sub

下面是ClockFace类的属性:

Private ClockRectangle As Rectangle

Private ClockFont As Font = New Font("Arial", 12)

Private midPoint As Point

Private ClockImage As Bitmap

Private Const IMAGEX As Integer = 50

Private Const IMAGEY As Integer = 50

DrawClockFace方法用来画时钟表面:

Private Sub DrawClockFace(ByVal g As Graphics)

g.FillEllipse(Brushes.White, ClockRectangle.Left + 10, ClockRectangle.Top + 10, ClockRectangle.Width - 20, ClockRectangle.Height - 20)

g.DrawEllipse(Pens.Black, ClockRectangle.Left + 10, ClockRectangle.Top + 10, ClockRectangle.Width - 20, ClockRectangle.Height - 20)

End Sub

然后用Graphics对象的DrawImage方法画出米老鼠的图片:

Private Sub DrawImage(ByVal g As Graphics)

Dim nWidth As Integer = ClockImage.Width

Dim nHeight As Integer = ClockImage.Height

Dim destRect As Rectangle = New Rectangle(midPoint.X - IMAGEX / 2, midPoint.Y - IMAGEY / 2, IMAGEX, IMAGEY)

g.DrawImage(ClockImage, destRect)

End Sub

数字在时钟上的位置是用sin和cos函数计算的:

Private Sub DrawNumbers(ByVal g As Graphics)

Dim count As Integer = 1

Dim a As Double

For a = 0 To 2 * Math.PI Step 2 * Math.PI / 12

Dim x As Double = (ClockRectangle.Width - 70) / 2 * Math.Cos(a - Math.PI / 3) + (ClockRectangle.Width - 70) / 2 + 25

Dim y As Double = (ClockRectangle.Width - 70) / 2 * Math.Sin(a - Math.PI / 3) + (ClockRectangle.Width - 70) / 2 + 20

g.DrawString(Convert.ToString(count), ClockFont, Brushes.Black, CType(x, Single), CType(y, Single), New StringFormat())

count += 1

Next

End Sub

最后是窗体文件(Form1.vb):

Public Class Form1

Inherits System.Windows.Forms.Form

Private MyMinuteHand As MinuteHand

Private MyHourHand As HourHand

Private MySecondHand As SecondHand

Private TheClockFace As ClockFace

Private FirstTick As Boolean = False

‘在窗体的OnPaint事件中取得Graphics对象

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

If (FirstTick = False) Then Exit Sub

Dim g As Graphics = e.Graphics

TheClockFace.Draw(g)

MyHourHand.Draw(g)

MyMinuteHand.Draw(g)

MySecondHand.Draw(g)

TheClockFace.DrawPin(g)

End Sub

‘计时器事件

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

MySecondHand.Transform(DateTime.Now)

MyHourHand.Transform(DateTime.Now)

MyMinuteHand.Transform(DateTime.Now)

FirstTick = True

Invalidate()

vb中怎样做出时钟?

VB可使用Timer控件、Line控件和绘图或加载图片等制作指针式时钟。

Timer 控件,通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。

Line 控件,Line 控件是图形控件,它显示水平线、垂直线或者对角线。

运行时不能使用 Move 方法移动 Line 控件,但是可以通过改变 X1、X2、Y1 和 Y2

属性来移动它或者调整它的大小。

Circle 方法,在对象上画圆、椭圆或弧。

以下是通过加载图片的指针式时钟代码:

Option Explicit

Private Const PI = 3.1415926

Dim X(1) As Single, Y(1) As Single

Dim OriAngle As Single, DestAngle As Single, r As Single

Private Sub RotateLine(objL As Line, bsPointX As Single, bsPointY As Single, RotateAngle As Single)

With objL

X(0) = .X1

Y(0) = .Y1

X(1) = .X2

Y(1) = .Y2

End With

Dim i As Integer

For i = 0 To 1

If X(i) - bsPointX  0 Then

OriAngle = Atn((Y(i) - bsPointY) / (X(i) - bsPointX))

Else

OriAngle = IIf(Y(i)  bsPointY, PI / 2, 1.5 * PI)

End If

If X(i) - bsPointX  0 Then

If OriAngle  0 Then

OriAngle = PI - Abs(OriAngle)

Else

OriAngle = PI + Abs(OriAngle)

End If

End If

DestAngle = OriAngle + RotateAngle

r = Sqr((X(i) - bsPointX) ^ 2 + (Y(i) - bsPointY) ^ 2)

X(i) = bsPointX + r * Cos(DestAngle)

Y(i) = bsPointY + r * Sin(DestAngle)

Next i

With objL

.X1 = X(0)

.Y1 = Y(0)

.X2 = X(1)

.Y2 = Y(1)

End With

End Sub

Private Sub Form_Load()

Timer1.Interval = 1000

Dim i As Long

For i = 1 To Val(Mid(Time$, 7, 2))

RotateLine Line3, Line3.X1, Line3.Y1, 1 * PI / 30

Next

For i = 1 To Val(Mid(Time$, 4, 2))

RotateLine Line2, Line2.X1, Line2.Y1, 1 * PI / 30

Next

For i = 1 To Val(Mid(Time$, 1, 2)) * 5 '对时针

RotateLine Line1, Line1.X1, Line1.Y1, 1 * PI / 30

Next

For i = 1 To Val(Mid(Time$, 4, 2)) '对时针

RotateLine Line1, Line1.X1, Line1.Y1, 1 * PI / 360

Next

End Sub

Private Sub Timer1_Timer()

RotateLine Line3, Line3.X1, Line3.Y1, 1 * PI / 30

RotateLine Line2, Line2.X1, Line2.Y1, PI / 1800

If Mid(Time$, 7, 2) = "00" Or Mid(Time$, 7, 2) = "30" Then

RotateLine Line1, Line1.X1, Line1.Y1, 1 * PI / 720

End If

Me.Caption = Time$

End Sub

VB程序设计怎么做数字时钟

1、添加一个“label控件”命名为label

2、添加一个“timer控件”命名为timer1

3、设置“timer1”的“Interval属性”为1000

使用到的代码:

Dim Hour As Integer '小时

Dim Min As Integer  '分钟

Dim Sec As Integer '秒

Private Sub Form_Load()

Hour = 0

Min = 0

Sec = 0

Label1.Caption = "00 : 00 : 00"

End Sub

Private Sub Timer1_Timer()

Dim strHour As String

Dim strMin As String

Dim strSec As String

Sec = Sec + 1

If Sec = 60 Then

Sec = 0

Min = Min + 1

If Min = 60 Then

Min = 0

Hour = Hour + 1

If Hour = 24 Then

Hour = 0

End If

End If

End If

If Hour  10 Then

strHour = "0"  Hour

Else

strHour = Hour

End If

If Min  10 Then

strMin = "0"  Min

Else

strMin = Min

End If

If Sec  10 Then

strSec = "0"  Sec

Else

strSec = Sec

End If

Label1.Caption = strHour  " : "  strMin  " : "  strSec

End Sub


网站栏目:vb.net小时钟程序的简单介绍
链接地址:http://myzitong.com/article/hejjcs.html