Visual Basic 6.0 使用者可用的 Shape 控制項
更新:2007 年 11 月
Visual Basic 6.0 的 Shape 控制項在 Visual Basic 2008 中沒有對等用法。但是您可以使用 Graphics 方法達到相同效果,或者也可以使用 Visual Basic Power Pack OvalShape 或 RectangleShape 控制項。這些控制項可做為增益集使用。
概念上的差異
在 Visual Basic 6.0 中,Shape 控制項提供了很簡單的方法,讓您可以輕鬆在設計階段於表單上繪製矩形、圓形或其他圖案。Shape 控制項是「輕量型」(Lightweight) 控制項,這表示它沒有 Windows 控制代碼 (也稱為 HWnd)。
在 Visual Basic 2008 中沒有 Shape 控制項的對等用法,而且不再支援輕量型控制項。不過,仍有一些方法可以在設計階段和執行階段,於表單上繪製圖案。
![]() |
---|
Visual Basic Power Pack 控制項包含 LineShape、OvalShape 和 RectangleShape,可用來取代 Line 和 Shape 控制項。除了複製 Visual Basic 6.0 Line 和 Shape 控制項的行為之外,這些控制項還加入了新功能,包括漸層填滿、執行階段選取和執行階段事件。 |
您可以從 MSDN 網站的 Microsoft Visual Basic 2005 Power Packs 頁面 (英文) 下載 Visual Basic Power Pack。
在設計階段時,您可以藉由加入 Label 控制項,接著將 Text 屬性設為空字串、將 BorderStyle 屬性設為 FixedSingle,並將 BackColor、Width 和 Height 設為想要的色彩和維度,在表單上繪製方形或矩形圖案。
在執行階段時,您可以從 Graphics 類別建立新物件並呼叫其方法,即可在表單的 Paint 事件處理常式中繪製矩形、橢圓形和複雜的圖案。
在 Visual Basic 6.0 中,您可以將 Shape 控制項加入至容器 (Container),即可使用 Shape 控制項在容器控制項 (如 PictureBox 或 Frame 控制項) 上繪製圖案。
在 Visual Basic 2008 中,您可以在容器控制項的 Paint 事件內呼叫 Graphics 方法,即可達到相同的效果。
Shape 控制項的程式碼變更
下列程式碼範例會示範 Visual Basic 6.0 與 Visual Basic 2008 之間的程式撰寫技巧差異。
繪製矩形圖案的程式碼變更
下列程式碼會示範在執行階段,於表單上繪製實心矩形。在 Visual Basic 6.0 範例中使用了 Shape 控制項,並假設已在設計階段加入 Line 控制項。Visual Basic 2008 範例會示範兩個不同方法:使用 Label 控制項和使用 Graphics 方法。
![]() |
---|
在 Visual Basic 6.0 中,預設的測量單位是 Twip;而 Visual Basic 2008 則是像素。 |
' Visual Basic 6.0
Private Sub Form_Load()
' Show a solid red rectangle 200 twips from the top left.
Shape1.Top = 200
Shape1.Left = 200
Shape1.FillColor = vbRed
Shape1.FillColor= vbFSSolid
Shape1.BorderColor = vbRed
End Sub
' Visual Basic
' Using a Label control.
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim Shape1 As New System.Windows.Forms.Label
' Show a solid red rectangle 14 pixels from the top left.
Shape1.Location = New System.Drawing.Point(14, 14)
Shape1.Size = New System.Drawing.Size(200, 100)
Shape1.BorderStyle = BorderStyle.None
Shape1.BackColor = System.Drawing.Color.Red
Shape1.Text = ""
Controls.Add(Shape1)
End Sub
' Visual Basic
' Using Graphics methods.
Private Sub Form2_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a solid blue rectangle below the red rectangle.
e.Graphics.FillRectangle(Brushes.Blue, 14, 120, 200, 100)
End Sub
繪製圓形的程式碼變更
下列程式碼會示範在執行階段,於表單上繪製圓形。在 Visual Basic 6.0 範例中使用了 Shape 控制項,並假設已在設計階段加入 Shape 控制項。Visual Basic 2008 範例會使用 Graphics 方法。
![]() |
---|
在 Visual Basic 6.0 中,預設的測量單位是 Twip;而 Visual Basic 2008 則是像素。 |
' Visual Basic 6.0
Private Sub Form_Load()
' Draw a 1000 twip diameter red circle.
Shape1.Top = 0
Shape1.Left = 0
Shape1.Height = 1000
Shape1.Width = 1000
Shape1.Shape = vbShapeCircle
Shape1.BorderColor = vbRed
End Sub
' Visual Basic
Private Sub Form3_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a 70 pixel diameter red circle.
e.Graphics.DrawEllipse(Pens.Red, 0, 0, 70, 70)
End Sub
升級注意事項
當 Visual Basic 6.0 應用程式升級時,參考 Shape 控制項的程式碼也會升級,以便使用 Visual Basic Power Pack 程式庫中包含的 OvalShape 或 RectangleShape 控制項。如果升級時發現 Shape 控制項的參考,則會發出警告,而且您必須安裝此程式庫並從升級專案參考它。
您可以從 MSDN 網站的 Microsoft Visual Basic 2005 Power Packs 頁面 (英文) 下載 Visual Basic Power Pack。