我正在用C#绘制一个圆圈,我把它分成了一些部分,我想用不同的颜色填充不同的部分,无论如何要做到这一点?以及如何?我尝试使用fillpie(),但我无法让参数工作。
这是代码:
int r = 150;
g.DrawEllipse(Pens.Black, 300 - r, 250 - r, 2 * r, 2 * r);
if (p != 0)
g.DrawLine(Pens.Black, 300, 250, 300 + r, 250);
double sum;
sum = 0.0;
for (int j = 0; j < p; j++)
sum += data[j].value;
double angle;
angle = 0.0;
for (int i = 0; i < p; i++)
{
angle += (double)(data[i].value / sum) * 2.0 * Math.PI;
textBox1.Text += sum.ToString() + " : " + angle.ToString() + ":" + Math.Cos(angle).ToString() + "\r\n";
g.DrawLine(Pens.Black, 300, 250, 300 + (int)(Math.Cos(angle) * r), 250 - (int)(Math.Sin(angle) * r));
//g.FillPie(Brushes.Black, 300-r , 250 - r, r, r ,(float)(angle),(float)(angle+ (data[i].value / sum) * 2.0 * Math.PI));
}
这实际上将圆圈划分为不同的部分,我不知道如何填充它们
注释行是我
的地方答案 0 :(得分:2)
假设您正在使用WinForms,MSDN为FillPie()方法提供了一些简单易用的示例。
public void FillPieRectangle(PaintEventArgs e)
{
// Create solid brush.
SolidBrush redBrush = new SolidBrush(Color.Red);
// Create rectangle for ellipse.
Rectangle rect = new Rectangle(0, 0, 200, 100);
// Create start and sweep angles.
float startAngle = 0.0F;
float sweepAngle = 45.0F;
// Fill pie to screen.
e.Graphics.FillPie(redBrush, rect, startAngle, sweepAngle);
}
修改强>
看起来你真的想绘制某种饼图,但你的代码看起来很复杂。看一下可能会给你一些帮助的this article。
答案 1 :(得分:0)
e.Graphics.FillPie(new SolidBrush(Color.Red,0, 0,45,45,0,30)