vb.net承繼的例子。本站提示廣大學習愛好者:(vb.net承繼的例子)文章只能為提供參考,不一定能成為您想要的結果。以下是vb.net承繼的例子正文
這次羅列一個在窗體上畫出一些圖形,如:長方形、正方形等的例子。
在vb.net中,控件可以被Windows零碎重新繪制,用戶可以經過重載OnPaint事情來畫自己的圖形。PaintEventArgs是零碎底層調入子例程的一個對象,用戶可以經過這個對象在窗體的外表畫一些圖形,用戶還需求樹立一個Pen對象,它的顏色的缺省值是黑色,線條的寬度的缺省值是1。上面這個例子闡明了這個對象的用法。
Protected Overrides Sub OnPaint(e as PaintEventArgs)
Dim g as Graphics=e.graphics
Dim rpen As new Pen(Color.Black)
g.drawLine(rpen,10,20,70,80)
End Sub
上面畫一個復雜的長方形,先寫一個長方形的類,它可以把自己畫在Windows窗體上,只要兩個辦法,一個是結構函數,一個是draw辦法,先聲明一個命名空間,然後再寫下長方形的類的完成代碼,如下:
Namespace VBPatterns
Public Class Rectangle
Private x,y,h,w As Integer
Protected rpen As Pen
Public Sub New(Byval x_ As Integer,_
Byval y_ As Integer,_
Byval h_ AS Integer,Byval w_ As Integer)
MyBase.New()
x=x_
y=y_
h=h_
w=w_
rpen=New Pen(Color.Black)
End Sub
End Class
End Namespace
如今每次在Main Form窗體中聲明一個變量,就把它聲明為命名空間中的一個成員。上面,首先把這個長方形的類聲明為VBPatterns命名空間的一個成員:
Public Class RectForm
Inherits System.WinForms.Form
Private rect As VBPatterns.Rectangle
並且樹立一個長方形類的對象
Public Sub New()
MyBase.New()
'This call is required by the Win Form Designer.
InitializeComponent()
rect=New VBPatterns.Rectangle(40,20,30,80)
End Sub
如今重載OnPaint事情:
Protected Overrides Sub OnPaint(Byval e As PaintEventArgs)
Dim g As Graphics
g=e.Graphics
rect.draw(g)
End Sub
從長方形樹立一個正方形:正方形不過是長方形的一個實例,可以從長方形的類派生出正方形的類而不需求重寫太多的代碼,上面就是完成的代碼:
Namespace VBPatterns
Public Class Square
Inherits Rectangle
Public Sub New(Byval x As Integer,_
Byval y As Integer,Byval w As Integer)
MyBase.New(x,y,w,w)
End Sub
End Class
End Namespace
正方形的類實踐上只包括了一個結構函數,不過它還調用了長方形的一些辦法,留意到正方形類實踐上沒有draw辦法,假如用戶不聲明一個新的辦法,則根本類的辦法就會自動被運用。
上面是經過結構函數樹立了一個長方形和一個正方形
Public Sub New()
InitializeComponent
rect=New Rectangle(10,10,30,80)
sq=New Square(50,50,50)
End Sub
偏重載Onpaint辦法:
Protected Overrides Sub OnPaint(Byval e As PaintEventArgs)
Dim g As Graphics
g=e.Graphics
rect=draw(g)
sq.draw(g)
End Sub
在vb 6.0中,用戶可以把一個變量或許類聲明為私有或許是公有,在類中私有變量可以被其他的類訪問,而公有變量只能在類中被訪問。在vb.net中引入了關鍵字Protected,Protected能在類中和它派生出來的類訪問,也就是說Protected變量不能在類的裡面被私有的訪問。
假定如今需求派生一個新的類叫做DoubleRect,它是從類Rectangle派生出來的,它的功用是畫兩個略微錯開的長方形,而且顏色不一樣。在結構函數中,將用白色來處置長方形的顏色,代碼如下:
Namespace VBPatterns
Public Class DoubleRect
Inherits Rectangle
Private redPen As Pen
'----
Public Sub New(Byval x As Integer,_
Byval y As Integer,_
Byval w As Integer,Byval h As Integer)
MyBase.New(x,y,w,h)
redPen=NewPen(Color.FromArGB(255,Color.Red),2)
End Sub
這意味著新類DoubleRect將具有自己的draw辦法,如今根本的類曾經有一個draw辦法了,所以必需再樹立一個具有相反名字的新辦法,所以重載這種辦法,代碼如下:
Public Overrides Sub draw(Byval g As Graphics)
MyBase.draw(g)
g.drawRectangle(redPen,x+4,y+4,w,h)
End Sub
留意:這裡想運用坐標系,而且長方形的大小曾經在結構函數進被給定了,但有時用戶需求改動這些參數,那麼可以在DoubleRect中保存這些參數的備份,自己再聲明一些參數,或許在根本類Rectangle中把這些參數設為Protected型,如:
Protected x,y,h,w As Integer
還必需通知編譯器,經過聲明Rectangle的draw辦法為overridable,這樣就可以給draw辦法重載了,代碼如下:
Public Overridable Sub draw(Byval g As Graphics)
g.DrawRectangle(rpen,x,y,w,h)
End Sub