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 = 50Dim PieSweepAngle As Single = 100Dim PieCenterPoint As PointDim GradientPath As New System.Drawing.Drawing2D.GraphicsPathDim 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 = PieCenterPointGradientBrush.CenterColor = Color.LightBlueGradientBrush.SurroundColors = New Color() {Color.DarkBlue}e.Graphics.FillPie(GradientBrush, PieBounds, PieAngle, PieSweepAngle)