如何绘制圆形渐变?

Con*_*ght 3 vb.net gdi+ winforms

如何绘制一个圆形梯度这样在vb.net?

红色圆形渐变

Pau*_*sik 5

看看这个很棒的页面。文章中的代码是用C#编写的。这是您感兴趣的代码的 VB.NET 端口,并针对矩形填充进行了更新(基于文章的三角形填充示例):

    Dim pgb As New PathGradientBrush(New Point() { _
        New Point(0, 0), _
        New Point(0, Me.ClientRectangle.Height), _
        New Point(Me.ClientRectangle.Width, Me.ClientRectangle.Height), _
        New Point(Me.ClientRectangle.Width, 0)})
pgb.SurroundColors = New Color() {Color.Red}
pgb.CenterColor = Color.Gray
e.Graphics.FillRectangle(pgb, Me.ClientRectangle)
pgb.Dispose()
Run Code Online (Sandbox Code Playgroud)

这是另一种可能的解决方案:

Dim pth As New GraphicsPath()
pth.AddEllipse(Me.ClientRectangle)
Dim pgb As New PathGradientBrush(pth)
pgb.SurroundColors = New Color() {Color.Red}
pgb.CenterColor = Color.Gray
e.Graphics.FillRectangle(pgb, Me.ClientRectangle)
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个代码片段将绘制一个以矩形为边界的圆。如果您希望圆形渐变填充整个矩形,则必须使用更大的矩形计算更大的椭圆路径。