using?System;
創(chuàng)新互聯(lián)專注于嵩明網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供嵩明營(yíng)銷型網(wǎng)站建設(shè),嵩明網(wǎng)站制作、嵩明網(wǎng)頁設(shè)計(jì)、嵩明網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造嵩明網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供嵩明網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
using?System.Windows.Forms;
namespace?WindowsFormsApplication1
{
public?partial?class?Form1?:?Form
{
Timer?tm?=?new?Timer();//實(shí)例化?timeer?
static?int?timeS?=?0;?//設(shè)置靜態(tài)變量記錄秒數(shù)
TimeSpan?ts?=?new?TimeSpan();?//實(shí)例化?TimeSpan?
public?Form1()
{
InitializeComponent();
}
private?void?button1_Click(object?sender,?EventArgs?e)
{
tm.Interval?=?1000;?//設(shè)置?timeer?1000毫秒執(zhí)行一次
tm.Tick?+=?new?EventHandler(timeer_Tick);?//設(shè)置?timeer?運(yùn)行事件
tm.Start();?//?啟用?timeer
}
private?void?timeer_Tick(object?sender,?EventArgs?e)
{
timeS?+=?1;?//秒數(shù)?+1?
ts?=?new?TimeSpan(0,?0,?timeS);?
label1.Text?=?ts.Hours?+?":"?+?ts.Minutes?+?":"?+?ts.Seconds;
}
private?void?button2_Click(object?sender,?EventArgs?e)
{
tm.Stop();
timeS?=?0;
}
}
}
1 生成txt文件。
DimSaveFileDialog1AsNewSaveFileDialog()?'創(chuàng)建一個(gè)保存對(duì)話框
SaveFileDialog1.Filter?="txt?files?(*.txt)|*.txt"?'設(shè)置擴(kuò)展名
IfSaveFileDialog1.ShowDialog()?=?System.Windows.Forms.DialogResult.OKThen?'如果確定保存
My.Computer.FileSystem.WriteAllText(SaveFileDialog1.Filename,?Textbox1.Text,False)?'保存文本,False表示不追加文本,直接覆蓋其內(nèi)容
EndIf
原文鏈接:
該實(shí)例有很多實(shí)現(xiàn)方法,下面介紹一種不同的給你:
首先要在窗體中載入以下控件:progressbar(進(jìn)度條),label(用來實(shí)時(shí)顯示文本提示),兩個(gè)timer(分別控制進(jìn)度條進(jìn)度的增減),然后用以下代碼就能實(shí)現(xiàn):
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Interval = 500
Timer2.Interval = 500
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
ProgressBar1.Minimum = 0
End Sub
'上述過程是設(shè)置控件的初始值,也可以在屬性面板設(shè)置
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value += 1
Label1.Text = "當(dāng)前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 100) Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
'timer1用來控制進(jìn)度的增加
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
ProgressBar1.Value -= 1
Label1.Text = "當(dāng)前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 0) Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
'time2用來控制進(jìn)度的減少
End Class
Visual Basic .NET Visual Basic.NET是基于微軟.NET Framework之上的面向?qū)ο蟮闹虚g解釋性語言,可以看作是Visual Basic在.Net Framework平臺(tái)上的升級(jí)版本,增強(qiáng)了對(duì)面向?qū)ο蟮闹С?。但由于改?dòng)太大,導(dǎo)致VB.net對(duì)VB的向后兼容性不好,在業(yè)界引起不小的爭(zhēng)議。 大多的VB.Net程序員使用Visual Studio .Net作為IDE(integrated development environment). SharpDevelop是另一種可用的開源的IDE。VB.Net需要在.Net Framework平臺(tái)上才能執(zhí)行。 VB.NET的主頁 1 目前版本 2005年9月以來,存在三種不同版本的Visual Basic .NET. 1 Visual Basic .NET:是隨vc#和ASP.NET一起在2002年發(fā)布的最初始的VB.net版本。C#被大力宣傳為微軟對(duì)付JAVA的王牌,受到媒體極力關(guān)注。然而VB.NET(有時(shí)被稱為VB7)影響面不廣,這導(dǎo)致VB社區(qū)之外很少人關(guān)注它。那些試用過此版VB.NET的人在層層幕布下發(fā)現(xiàn)一個(gè)強(qiáng)大卻艱深的語言,而且還有不少弱點(diǎn),比如它比VB6來有一個(gè)大了十倍的進(jìn)行時(shí)(RunTime),內(nèi)存footprint也大大增加。 2 Visual Basic .NET 2003:是和.NET Framework 1.1一起發(fā)布的。新功能包括對(duì).NET Compact Framework的支持和更好的VB升遷向?qū)?。并改進(jìn)了運(yùn)行狀況,IDE穩(wěn)定性(尤其是后臺(tái)編譯器),以及運(yùn)行時(shí)RunTime穩(wěn)定性。另外,VB.NET 2003還有一個(gè)學(xué)院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分發(fā)給各國(guó)某些學(xué)者免費(fèi)使用的版本。 3 Visual Basic 2005:VB2005是VB.Net的重大轉(zhuǎn)變,微軟決意在其軟件名稱中去掉了.NET部份。在VB2005中,微軟增加了許多新功能,以引用VB對(duì)于初學(xué)者來說的一些優(yōu)點(diǎn): A, Edit and Continue - 也許是從VB那里丟掉的最大的功能,允許代碼的編輯和執(zhí)行立即的執(zhí)行恢復(fù)。 B, Design-time expression evaluation C, My偽命名空間,提供了訪問.NET Framework特定域的不需大量編碼的簡(jiǎn)單方式;還能動(dòng)態(tài)產(chǎn)生類(顯然的是My.Forms);提供了改進(jìn)的VB到VB.NET轉(zhuǎn)換向?qū)В籙sing 語法,簡(jiǎn)化了需要部署pattern to free resources的對(duì)象的使用;My編碼,可隱藏由VB.NET IDE寫的模板代碼;數(shù)據(jù)源綁定,簡(jiǎn)化了數(shù)據(jù)庫C/S開發(fā) 上述功能(尤其是My)增強(qiáng)了VB.Net成為快速開發(fā)應(yīng)用平臺(tái)的可能,并與C#進(jìn)一步區(qū)別開來。參見: 使用My開發(fā) 通過My命名空間訪問.NET Framework 和項(xiàng)目 Visual Basic 2005 通過增加新功能而填補(bǔ)了和其它所謂更強(qiáng)大的.NET語言的差距。 A, 增加了.NET 2.0語言功能包括:generics和Partial類(在一個(gè)文件里定義一個(gè)類的某部份然后再添加更多的定義,這個(gè)方法在整合用戶編碼和系統(tǒng)自動(dòng)生成編碼時(shí)尤其有用)。 B, XML注釋,可以被NDoc等工具處理而自動(dòng)生成文檔 C, operator overloading D, 支持在其它語言中已經(jīng)廣泛使用的unsigned integer數(shù)據(jù)類型。 E, 支持在許多C衍生編程語言已提供的復(fù)合操作符如:"+=", "-=" 4, IsNot專利:If Not X Is Y表達(dá)式被轉(zhuǎn)換成If X IsNot Y。當(dāng)微軟為IsNot申請(qǐng)專利時(shí)招致了惡名(尤其來自Real公司)。 5, Visual Basic 2005 Express:作為VS產(chǎn)品線上的一部份,VB2005 Express是專為業(yè)余愛好者和新手定制的免費(fèi)的VS Express系列的一員。Express版本目的定位在幫助人們學(xué)習(xí)一種語言,所以他們有和標(biāo)準(zhǔn)版一致的用戶界面,只是少了一些高級(jí)功能。另外,VS 查看更多答案
記得采納啊
就
是
這
個(gè)
了
!
Hand類的代碼:
Public MustInherit Class Hand
Protected gp As GraphicsPath = New GraphicsPath()
Protected gpBase As GraphicsPath = Nothing
Protected midX As Integer = 150 ‘默認(rèn)的窗體
Protected midY As Integer = 150 ‘中心位置
‘構(gòu)造器,得到窗體中心位置
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
‘使用矩陣實(shí)現(xiàn)路徑(gp)的旋轉(zhuǎn)
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
‘構(gòu)造器,生成繪制分針的路徑(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)當(dāng)前時(shí)間,并旋轉(zhuǎn)時(shí)鐘指針。
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
對(duì)所有的指針旋轉(zhuǎn)的方法都是相同的,因此在基類中實(shí)現(xiàn)。由于時(shí)針和秒針的實(shí)現(xiàn)與分針相似,所不同者,只在于構(gòu)造器中繪制的指針路徑不同和Transform方法中轉(zhuǎn)動(dòng)的角度不同,在這里就不在贅述了。
另外還需要提一下的是畫時(shí)鐘表面的代碼,時(shí)鐘表面用ClockFace類來實(shí)現(xiàn)。這個(gè)類首先畫一個(gè)圓代表時(shí)鐘,然后畫上米老鼠的圖案,最后在相應(yīng)的位置畫上數(shù)字1~12代表12個(gè)小時(shí)。
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方法用來畫時(shí)鐘表面:
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對(duì)象的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ù)字在時(shí)鐘上的位置是用sin和cos函數(shù)計(jì)算的:
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對(duì)象
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
‘計(jì)時(shí)器事件
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()