中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

關于vb.net時鐘代碼的信息

vb.net開發(fā)簡單的時鐘程序??高手救救我!

網(wǎng)站建設、基于H5技術技術的Web開發(fā)、手機站開發(fā)、微信開發(fā)等互聯(lián)網(wǎng)應用服務。成都創(chuàng)新互聯(lián)公司始終關注著互聯(lián)網(wǎng)行業(yè)的前沿動態(tài),創(chuàng)新互聯(lián)堅信:真誠的態(tài)度,勤奮的工作是我們贏得客戶信賴的基礎;而不斷創(chuàng)新、力求完美,才是創(chuàng)新互聯(lián)共同邁向美好未來的保證。

!

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

‘使用矩陣實現(xiàn)路徑(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

為了節(jié)省篇幅,上面的代碼省略了引入命名空間的語句。

下面是分針(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方法取得系統(tǒng)當前時間,并旋轉時鐘指針。

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

對所有的指針旋轉的方法都是相同的,因此在基類中實現(xiàn)。由于時針和秒針的實現(xiàn)與分針相似,所不同者,只在于構造器中繪制的指針路徑不同和Transform方法中轉動的角度不同,在這里就不在贅述了。

另外還需要提一下的是畫時鐘表面的代碼,時鐘表面用ClockFace類來實現(xiàn)。這個類首先畫一個圓代表時鐘,然后畫上米老鼠的圖案,最后在相應的位置畫上數(shù)字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

數(shù)字在時鐘上的位置是用sin和cos函數(shù)計算的:

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 時鐘代碼

Private

Sub

Form_Load()

Form1.AutoRedraw

=

True

Form1.Height

=

3500

Form1.Width

=

3500

Form1.Scale

(-100,

100)-(100,

-100)

'這里VB是以正X和負Y開始原始坐標,就是Y坐標和我們平時畫的相反

Line1.X1

=

0:

Line1.Y1

=

Line2.X1

=

0:

Line2.Y1

=

Line3.X1

=

0:

Line3.Y1

=

Line1.BorderColor

=

RGB(0,

0,

0)

Line1.BorderWidth

=

3

Line2.BorderColor

=

RGB(0,

0,

255)

Line2.BorderWidth

=

2

Line3.BorderColor

=

RGB(255,

0,

0)

Shape1.Top

=

95

'這里因為Y坐標是相反的,所以要正數(shù)

Shape1.Left

=

-95

Line3.BorderWidth

=

1

Shape1.BorderStyle

=

3

Shape1.BorderWidth

=

3

Shape1.Width

=

190

Shape1.Height

=

190

Shape1.BorderColor

=

RGB(0,

0,

255)

Timer1.Interval

=

1000

End

Sub

Private

Sub

Timer1_Timer()

sx

=

Cos((180

-

6

*

Second(Time))

*

3.14159

/

180)

*

65

'COS。不知道怎么說

sy

=

Sin((180

-

6

*

Second(Time))

*

3.14159

/

180)

*

65

'同上,的秒針反方向轉了

Line3.X2

=

sx

Line3.Y2

=

sy

mx

=

Cos((180

-

6

*

Minute(Time))

*

3.14159

/

180)

*

65

my

=

Sin((180

-

6

*

Minute(Time))

*

3.14159

/

180)

*

65

Line2.X2

=

mx

Line2.Y2

=

my

hx

=

Cos((180

-

(30

*

Hour(Time)

+

30

*

Minute(Time)

/

60))

*

3.14159

/

180)

*

40

hy

=

Sin((180

-

(30

*

Hour(Time)

+

30

*

Minute(Time)

/

60))

*

3.14159

/

180)

*

40

Line1.X2

=

hx

Line1.Y2

=

hy

Form1.CurrentX

=

-2

Form1.CurrentY

=

80

Form1.Print

"12"

Form1.CurrentX

=

75

Form1.CurrentY

=

-8

Form1.Print

"3"

Form1.CurrentX

=

-80

Form1.CurrentY

=

-8

Form1.Print

"9"

End

Sub

用VB.net做一個時間計時器

'添加一個label標簽名字label1 用來顯示時間

'再添加一個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時鐘代碼的信息
當前URL:http://www.rwnh.cn/article32/doohgpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、網(wǎng)站營銷全網(wǎng)營銷推廣、云服務器網(wǎng)站排名、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
开平市| 榆社县| 汉沽区| 高青县| 衡阳县| 阜新市| 兴海县| 渭源县| 齐齐哈尔市| 哈密市| 孟州市| 册亨县| 石河子市| 崇仁县| 宜阳县| 景东| 新乐市| 彩票| 清河县| 琼中| 新乐市| 汪清县| 德安县| 烟台市| 洛隆县| 桐梓县| 武乡县| 通榆县| 呼玛县| 吉水县| 修文县| 田东县| 张家港市| 宜都市| 濉溪县| 乳源| 扬州市| 垫江县| 水富县| 茌平县| 石门县|