投稿者 るしぇ  (社会人) 投稿日時 2010/2/27 03:26:45
>前のコードの状態のままでは 左右の頂点のみ描写されてしまいました。
>参考URLにSystem.Drawing.Drawing2Dの使用方法があったのでそちらを
>拝見しMSDNでメンバを調べた次第です。 
了解です。

原因というか、追加情報。
Rectangle:長方形,矩形(くけい)
の示す通り、長方形で縁取りされた後、Region で六角形部分の描画がされてそうだから
自分で描画するのが妥当ですね。

>フォームの端をドラッグして大きさ変えてやると描画が上手くいかないね。。。
なんか、ウチの環境しばらく使わなかったら、描画関係のメソッド実行したら
変な動きをするように。。。orz
プロジェクト作成しなおしたら問題なくなりました。
(一時、ウチの環境では縞模様に描画されてしまってましたw)

余談ですが、早めに Option Strict On の設定を覚えた方が実力が上がりやすいです。
プロジェクトのプロパティで[コンパイル]のページで指定すれば全体に適用されます。
新規プロジェクト作成時に常に設定するには、[ツール]-[オプション]画面から
[プロジェクトおよびソリューション]-[Visual Basic の規定値]で設定しておきます。
Option Strict On の意味についてはヘルプ等を参照下さい。

更に言えば、質問時のサンプルコードで重要なコードまで削除されているので
気をつけましょう。(継承で Inherits のコードを省略するのは致命的です。)
サンプルコードとして最小限のコードを投稿しようとする姿勢は買いますけどね。
Option Strict On '1ファイル毎にOn/Off指定することもできます。 
Imports System.Drawing.Drawing2D 'GraphicsPath のインポートも1ファイル毎に指定できます。 

Public Class Form1
    Private Sub AddMyLabel()
        Dim myLabel1 As New Mylabel
        myLabel1.Location = New Point(114, 97)
        myLabel1.Width = 400
        myLabel1.Height = 50
        myLabel1.Text = "1234567891011121314151617181920"
        myLabel1.BackColor = Color.Black
        myLabel1.TextAlign = ContentAlignment.BottomCenter
        Me.Controls.Add(myLabel1)
    End Sub

    Public Sub New()

        ' この呼び出しは、Windows フォーム デザイナで必要です。 
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。 
        Call AddMyLabel()
    End Sub
End Class

Public Class Mylabel
    Inherits Label '継承 

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)
        Dim pa As New GraphicsPath
        Dim points(5) As Point
        Dim w As Integer = MyBase.Width
        Dim h As Integer = MyBase.Height
        pa.StartFigure()
        points(0) = New Point(0, CInt(h / 2))
        points(1) = New Point(CInt(360 / (h / 2)), 0)
        points(2) = New Point(CInt(w - (360 / (h / 2))), 0)
        points(3) = New Point(w, CInt(h / 2))
        points(4) = New Point(CInt(w - (360 / (h / 2))), h)
        points(5) = New Point(CInt(360 / (h / 2)), h)
        pa.AddPolygon(points)
        pa.CloseFigure()
        Dim rgn As New Region(pa)
        MyBase.Region = rgn
        rgn.Dispose()
        '--ボーダーカラーの設定  
        Dim p As New Pen(Color.Aquamarine, 2) '←太くして縁取りは良い案ですね。 
        e.Graphics.DrawPath(p, pa)
        p.Dispose() 'リソース解放しておいた方が良い 
        '--ここまで  
    End Sub
End Class