Public Class Form1 '********************************************************************* '作者:章鱼哥,QQ:3107073263 群:309816713 '如有疑问或好的建议请联系我,大家一起进步 '********************************************************************* '绘制圆角矩形函数 Private Function GetRoundedRectPath(ByVal rect As Rectangle,ByVal radius As Integer) As System.Drawing.Drawing2D.GraphicsPath rect.Offset(-1,-1) Dim RoundRect As New Rectangle(rect.Location,New Size(radius - 1,radius - 1)) Dim path As New System.Drawing.Drawing2D.GraphicsPath path.AddArc(RoundRect,180,90) '左上角 RoundRect.X = rect.Right - radius '右上角 path.AddArc(RoundRect,270,90) RoundRect.Y = rect.Bottom - radius '右下角 path.AddArc(RoundRect,90) RoundRect.X = rect.Left '左下角 path.AddArc(RoundRect,90,90) path.CloseFigure() Return path End Function '绘制矩形 Private Sub DrawingRect() Dim g As Graphics = Me.CreateGraphics '定义一个画布 Dim Pen As New Pen(Brushes.DarkRed,2) '定义一个画笔 Dim Hei As Integer = Me.Height Dim Wid As Integer = Me.Width '矩形的位置和长宽随着窗体的变化而改变 Dim Rec As New Rectangle(Int(Wid / 5),Int(Hei / 5),Int(Wid / 2),Int(Hei / 2)) ' g.DrawRectangle(Pen,Rec) '清楚现有的矩形 g.Clear(Me.BackColor) g.DrawPath(Pen,GetRoundedRectPath(Rec,30)) End Sub Private Sub Form1_Paint(ByVal sender As System.Object,ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint DrawingRect() End Sub Private Sub Form1_SizeChanged(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.SizeChanged Me.Invalidate() '此函数可引发Paint事件 End Sub End Class
原窗体绘制:
缩小窗体时: