Shape コントロール (Visual Basic 6.0 ユーザー向け)
更新 : 2007 年 11 月
Visual Basic 6.0 の Shape コントロールに対応するものは、Visual Basic 2008 にはありません。ただし、Graphics メソッドを使って同じ結果を得ることができます。あるいは、Visual Basic Power Packs の OvalShape または RectangleShape コントロールを使用することもできます。これらのコントロールは、アドインとして使用できます。
概念の違い
Visual Basic 6.0 では、Shape コントロールを使って、四角形、円、およびその他の形状をデザイン時にフォームに簡単に描画できます。Shape コントロールは、"軽量の" コントロールです。つまり、Windows ハンドル (HWnd とも呼ばれます) を持たないコントロールです。
Visual Basic 2008 には、Shape コントロールに対応するものはなく、軽量コントロールもサポートされなくなりました。ただし、デザイン時と実行時の両方で形状をフォームに描画する方法があります。
メモ : |
---|
Visual Basic Power Packs のコントロールには、LineShape コントロール、OvalShape コントロール、および RectangleShape コントロールが含まれます。これらは Line コントロールと Shape コントロールの代わりに使用できます。Visual Basic 6.0 の Line コントロールや Shape コントロールと同じ動作をするという以外に、これらのコントロールにはグラデーション塗りつぶし、実行時選択、実行時イベントなどの新機能が加えられています。 |
Visual Basic Power Packs は、MSDN Web サイトの Microsoft Visual Basic 2005 Power Packs ページからダウンロードできます。
デザイン時に正方形または四角形をフォーム上に描画するには、Label コントロールを追加し、Text プロパティを空の文字列に設定し、BorderStyle プロパティを FixedSingle に設定し、BackColor、Width、および Height を適切な色とサイズに設定します。
Graphics クラスから新しいオブジェクトを作成し、そのメソッドを呼び出すことにより、実行時にフォームの Paint イベント ハンドラで四角形、楕円形、および複雑な形状を描画できます。
Visual Basic 6.0 では、Shape コントロールを使って、PictureBox コントロールまたは Frame コントロールなどのコンテナ コントロールの前面に形状を描画するには、Shape コントロールをコンテナに追加します。
Visual Basic 2008 では、Graphics メソッドをコンテナ コントロールの Paint イベント内で呼び出すことにより、同じ結果が得られます。
Shape コントロールを扱うコードの変更
次のコード例は、Visual Basic 6.0 と Visual Basic 2008 のコーディング テクニックの違いを示しています。
四角形を描画するコードの変更
次のコードは、実行時にフォーム上に塗りつぶされた四角形を描画する方法を示します。Visual Basic 6.0 のコード例では、Shape コントロールを使用し、Line コントロールがデザイン時に追加されていると仮定します。Visual Basic 2008 のコード例では、Label コントロールを使用する方法と、Graphics メソッドを使用する方法の 2 つを示します。
メモ : |
---|
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 コントロールを参照するコードは、OvalShape または RectangleShape コントロールを使用するようにアップグレードされます。これらのコントロールは Visual Basic Power Packs ライブラリに含まれています。アップグレード中に Shape コントロールへの参照が見つかると、警告が発行されます。警告が発行されたら、ライブラリをインストールし、アップグレードされたプロジェクトからこれを参照する必要があります。
Visual Basic Power Packs は、MSDN Web サイトの Microsoft Visual Basic 2005 Power Packs ページからダウンロードできます。