自定义圆形按钮与轮廓

时间:2017-09-29 18:23:54

标签: vb.net winforms custom-controls

我想创建一个自定义按钮宽度圆角和一个跟随其形状的白色轮廓。在OnPaint事件中,我添加了以下代码。

Public Class RoundedButton
    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        MyBase.OnPaint(e)
        Dim grPath As GraphicsPath = New GraphicsPath(FillMode.Winding)
        grPath.AddArc(0, 0, ClientSize.Height, ClientSize.Height, 90, 180)
        grPath.AddLine(grPath.GetLastPoint, New Point(ClientSize.Width - grPath.GetLastPoint.X * 2, 0))
        grPath.AddArc(New RectangleF(grPath.GetLastPoint, New Size(ClientSize.Height, ClientSize.Height)), 270, 180)
        grPath.CloseFigure()

        Me.Region = New Region(grPath)

        Dim mypen As New Pen(Color.White, 2)
        mypen.Alignment = PenAlignment.Inset
        e.Graphics.DrawPath(mypen, grPath)
    End Sub
End Class

如果我尝试在表单中使用它,仅当Backcolor属性设置为Transparent时才有效。如果不是,我看不到笔路。 我想改变背景颜色而不会松开笔的圆形白色边框。 我想得到这样的东西: enter image description here

1 个答案:

答案 0 :(得分:1)

对于您想要自定义按钮的所有项目,通常最简单的方法是使用按钮的图片对PictureBox进行曲线处理,然后使用编码语言(VB.NET,C#,C ++)添加点击功能以使动作。

这是一个使用VB.NET的小例子:

Private Sub pictureBox1_Click(sender As Object, e As EventArgs) Handles pictureBox1.Click
    Process.start("http://stackoverflow.com")
End Sub

希望我帮助过, 马特