Recently I realized that the .NET LinearGradientBrush will not properly fill a pie slice with a sweep angle greater than 180 degrees. Instead you have to use a PathGradientBrush. It's pretty simple to do; just create a GraphicsPath which contains the path of your pie slice and pass it into the PathGradientBrush constructor. Then set your CenterPoint, CenterColor and SurroundColors, draw the slice with the PathGradientBrush and voilà!
Dim PieBounds As New Rectangle(20, 20, 200, 200)
Dim PieAngle As Single = 50
Dim PieSweepAngle As Single = 100
Dim PieCenterPoint As Point
Dim GradientPath As New System.Drawing.Drawing2D.GraphicsPath
Dim GradientBrush As System.Drawing.Drawing2D.PathGradientBrush
PieCenterPoint = New Point((PieBounds.Width / 2) + PieBounds.X, (PieBounds.Height / 2) + PieBounds.Y)
GradientPath.AddPie(PieBounds, PieAngle, PieSweepAngle)
GradientBrush = New System.Drawing.Drawing2D.PathGradientBrush(GradientPath)
GradientBrush.CenterPoint = PieCenterPoint
GradientBrush.CenterColor = Color.LightBlue
GradientBrush.SurroundColors = New Color() {Color.DarkBlue}
e.Graphics.FillPie(GradientBrush, PieBounds, PieAngle, PieSweepAngle)
