共用方式為


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,並將 BackColorWidthHeight 設為想要的色彩和維度,在表單上繪製方形或矩形圖案。

在執行階段時,您可以從 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。

請參閱

概念

Visual Basic 6.0 使用者可用的圖形