【发布时间】: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