投稿者 tecc  (社会人) 投稿日時 2010/2/26 23:43:59
[2008] EE

以前、投稿した六角形のラベルの続きです。

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 Class Mylabel
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, h / 2)
        points(1) = New Point(360 / (h / 2), 0)
        points(2) = New Point(w - (360 / (h / 2)), 0)
        points(3) = New Point(w, h / 2)
        points(4) = New Point(w - (360 / (h / 2)), h)
        points(5) = New Point(360 / (h / 2), h)
        pa.AddPolygon(points)
        pa.CloseFigure()
        Dim rgn As New Region(pa)
        MyBase.Region = rgn
        rgn.Dispose()
'--ボーダーカラーの設定 
        Dim p As Color = Color.Aquamarine
        Dim db As Color = Color.Aquamarine
        ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, p, 2, _
            ButtonBorderStyle.Solid, p, 2, ButtonBorderStyle.Solid, p, 2, _
            ButtonBorderStyle.Solid, p, 2, ButtonBorderStyle.Solid)
'--ここまで 
End Sub

ラベルを継承しイベントをオーバーライドしてボーダーカラーの設定を行おうとしたのですが
左右の斜めの部分が描写されません。斜めの部分を描写する事は可能ですか?
宜しく御願いします。

できないようであれば、ラベルの座標にピクチャーボックスを置いて枠線を作るようにします。