【问题标题】:Custom rounded button with outline带轮廓的自定义圆形按钮
【发布时间】:2017-09-29 18:23:54
【问题描述】:

我正在尝试创建一个自定义按钮宽度圆角和一个遵循其形状的白色轮廓。在 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 属性设置为透明时才有效。如果不是,我看不到笔路径。 我想在不松开笔的圆形白色边框的情况下更改背景颜色。 我想获得这样的东西:

【问题讨论】:

  • 白色部分在哪里?我只看到一支红笔。不清楚您需要什么帮助。永远不要在绘制事件中设置 Region 属性。也处理你的绘图对象。
  • Ops,红色只是为了测试。我已经更新了帖子,所以我想现在我想获得什么很清楚了。

标签: vb.net winforms custom-controls


【解决方案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

希望我能帮上忙, 马特

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2011-03-31
    • 2020-03-24
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多