常用的渐变方法对比如下
界面预览:
程序如下:
Imports System.Drawing
Imports System.Drawing.Drawing2D
Public Class form1Class form1
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call Me.GradientFill1(Pic1)
Call Me.GradientFill2(Pic2)
Call Me.GradientFill3(Pic3)
Call Me.GradientFill4(Pic4)
End Sub
Private Sub GradientFill1()Sub GradientFill1(ByVal Control As Control)
Dim LineBrush As New LinearGradientBrush(Control.ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.Horizontal)
Control.CreateGraphics.FillRectangle(LineBrush, Control.ClientRectangle)
End Sub
Private Sub GradientFill2()Sub GradientFill2(ByVal Control As Control)
Dim path As New GraphicsPath
path.AddRectangle(Control.ClientRectangle)
Dim pgb As New PathGradientBrush(path)
pgb.CenterPoint = Point.op_Implicit(New Point(Control.Width / 2, Control.Height / 2))
pgb.CenterColor = Color.White
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
pgb.SurroundColors = Colors
Control.CreateGraphics.FillRectangle(pgb, Control.ClientRectangle)
End Sub
Private Sub GradientFill3()Sub GradientFill3(ByVal Control As Control)
Dim path As New GraphicsPath
path.AddRectangle(Control.ClientRectangle)
Dim pgb As New PathGradientBrush(path)
pgb.CenterPoint = Point.op_Implicit(New Point(Control.Width / 2, Control.Height / 2))
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
Dim Positions() As Single = {0, 0.3, 0.6, 1}
Dim cb As ColorBlend = New ColorBlend
cb.Colors = Colors
cb.Positions = Positions
pgb.InterpolationColors = cb
Control.CreateGraphics.FillRectangle(pgb, Control.ClientRectangle)
End Sub
Private Sub GradientFill4()Sub GradientFill4(ByVal Control As Control)
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
Dim Positions() As Single = {0, 0.33, 0.66, 1}
Dim cb As ColorBlend = New ColorBlend
cb.Colors = Colors
cb.Positions = Positions
Dim LineBrush As New LinearGradientBrush(Control.ClientRectangle, Color.White, Color.Black, LinearGradientMode.Horizontal)
LineBrush.InterpolationColors = cb
LineBrush.LinearColors = Colors
Control.CreateGraphics.FillRectangle(LineBrush, Control.ClientRectangle)
End Sub
End Class
Imports System.Drawing.Drawing2D
Public Class form1Class form1
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call Me.GradientFill1(Pic1)
Call Me.GradientFill2(Pic2)
Call Me.GradientFill3(Pic3)
Call Me.GradientFill4(Pic4)
End Sub
Private Sub GradientFill1()Sub GradientFill1(ByVal Control As Control)
Dim LineBrush As New LinearGradientBrush(Control.ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.Horizontal)
Control.CreateGraphics.FillRectangle(LineBrush, Control.ClientRectangle)
End Sub
Private Sub GradientFill2()Sub GradientFill2(ByVal Control As Control)
Dim path As New GraphicsPath
path.AddRectangle(Control.ClientRectangle)
Dim pgb As New PathGradientBrush(path)
pgb.CenterPoint = Point.op_Implicit(New Point(Control.Width / 2, Control.Height / 2))
pgb.CenterColor = Color.White
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
pgb.SurroundColors = Colors
Control.CreateGraphics.FillRectangle(pgb, Control.ClientRectangle)
End Sub
Private Sub GradientFill3()Sub GradientFill3(ByVal Control As Control)
Dim path As New GraphicsPath
path.AddRectangle(Control.ClientRectangle)
Dim pgb As New PathGradientBrush(path)
pgb.CenterPoint = Point.op_Implicit(New Point(Control.Width / 2, Control.Height / 2))
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
Dim Positions() As Single = {0, 0.3, 0.6, 1}
Dim cb As ColorBlend = New ColorBlend
cb.Colors = Colors
cb.Positions = Positions
pgb.InterpolationColors = cb
Control.CreateGraphics.FillRectangle(pgb, Control.ClientRectangle)
End Sub
Private Sub GradientFill4()Sub GradientFill4(ByVal Control As Control)
Dim Colors() As Color = {Color.Red, Color.LightGreen, Color.Yellow, Color.Blue}
Dim Positions() As Single = {0, 0.33, 0.66, 1}
Dim cb As ColorBlend = New ColorBlend
cb.Colors = Colors
cb.Positions = Positions
Dim LineBrush As New LinearGradientBrush(Control.ClientRectangle, Color.White, Color.Black, LinearGradientMode.Horizontal)
LineBrush.InterpolationColors = cb
LineBrush.LinearColors = Colors
Control.CreateGraphics.FillRectangle(LineBrush, Control.ClientRectangle)
End Sub
End Class