Vb.net 如何删除按钮的角?

Vb.net 如何删除按钮的角?,vb.net,button,drawing,Vb.net,Button,Drawing,我正在尝试删除按钮边框中未包含的角 我使用以下方法绘制按钮边框: Private Sub BTN_Connexion_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles BTN_Connexion.Paint Me.DrawRectangle(e.Graphics, New Pen(Color.White), 0, 0, BTN_Connexion.Width - 1, BTN_

我正在尝试删除按钮边框中未包含的角

我使用以下方法绘制按钮边框:

Private Sub BTN_Connexion_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles BTN_Connexion.Paint
    Me.DrawRectangle(e.Graphics, New Pen(Color.White), 0, 0, BTN_Connexion.Width - 1, BTN_Connexion.Height - 1, 10) 
End Sub

Public Sub DrawRectangle(ByVal g As Graphics, ByVal pen As Pen, ByVal x As Int32, ByVal y As Int32, ByVal width As Int32, ByVal height As Int32, ByVal radius As Int32)
    'Create a rectangle
    Dim area As RectangleF = New RectangleF(x, y, width, height)
    Dim path As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath

    'Add the corners
    path.AddArc(area.Left, area.Top, radius * 2, radius * 2, 180, 90) 'Upper-Left
    path.AddArc(area.Right - (radius * 2), area.Top, radius * 2, radius * 2, 270, 90) 'Upper-Right
    path.AddArc(area.Right - (radius * 2), area.Bottom - (radius * 2), radius * 2, radius * 2, 0, 90) 'Lower-Right
    path.AddArc(area.Left, area.Bottom - (radius * 2), radius * 2, radius * 2, 90, 90) 'Lower-Left
    path.CloseAllFigures()

    'Draw the rounded rectangle
    g.DrawPath(pen, path)
End Sub
角可以采用主颜色。这样它们就不会出现在按钮上。但我不知道这是否是一个好的做法,而且我不知道如何做到这一点


那么,您能告诉我如何删除这些角点吗?

我已经解决了问题,以下是解决方案:

在要实现圆角按钮的形式中,请执行以下操作:

Private Sub BTN_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles BTN_Connect.Paint, BTN_Disconnect.Paint
    DirectCast(sender, Button).Region = New Region(SpecificDesign.DrawRoundRectangle(0, 0, BTN_Connect.Width - 1, BTN_Connect.Height - 1, 10))
End Sub
SpecificDesign
包含:

Public Class SpecificDesign
   ''' <summary>
   ''' Create the path of a rounded rectangle.
   ''' </summary>
   ''' <param name="left">Ordinate of the left top corner</param>
   ''' <param name="Top">Abscissa of the left top corner</param>
   ''' <param name="width">Width of the rounded rectangle (Left and right lines)</param>
   ''' <param name="height">Height of the rounded rectangle(Top and bottom lines)</param>
   ''' <param name="radius">Radius of the rounded corner </param>
   ''' <returns></returns>
   Public Shared Function DrawRoundRectangle(ByVal left As Int32, ByVal Top As Int32, ByVal width As Int32, ByVal height As Int32, ByVal radius As Int32) As Drawing2D.GraphicsPath
          Dim path As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath

          path.AddArc(left, Top, radius * 2, radius * 2, 180, 90) 'Upper-Left
          path.AddArc(left + width - (radius * 2), Top, radius * 2, radius * 2, 270, 90) 'Upper-Right
          path.AddArc(left + width - (radius * 2), Top + height - (radius * 2), radius * 2, radius * 2, 0, 90) 'Lower-Right
          path.AddArc(left, Top + height - (radius * 2), radius * 2, radius * 2, 90, 90) 'Lower-Left
          path.CloseAllFigures()

          Return path
   End Function
End Class
公共类特定设计
''' 
''创建圆角矩形的路径。
''' 
左上角的“纵坐标”
''左上角横坐标
圆角矩形的“宽度”(左行和右行)
圆角矩形的高度(顶线和底线)
圆角的“半径”
''' 
公共共享函数DrawRoundRectangle(ByVal左侧为Int32,ByVal顶部为Int32,ByVal宽度为Int32,ByVal高度为Int32,ByVal半径为Int32)作为Drawing2D.GraphicsPath
尺寸路径为Drawing2D.GraphicsPath=新Drawing2D.GraphicsPath
路径.添加弧(左,顶部,半径*2,半径*2,180,90)'左上角
路径添加弧(左+宽-(半径*2),顶部,半径*2,半径*2,270,90)'右上角
路径。添加弧(左+宽-(半径*2),顶+高-(半径*2),半径*2,半径*2,0,90)“右下角
路径添加弧(左,顶部+高度-(半径*2),半径*2,半径*2,90,90)“左下角
path.CloseAllFigures()
返回路径
端函数
末级