.NET饼图:如何将文本添加到切片并旋转图表
问题描述:
下面的代码将创建一个24切片饼图。我如何:.NET饼图:如何将文本添加到切片并旋转图表
- 将文本标签添加到每个切片a“幸运之轮”。
-
旋转饼图?我想让它像“幸运之轮”一样旋转。
private void DrawPieChart() { Graphics g = this.CreateGraphics(); g.Clear(this.BackColor); Rectangle rect = new Rectangle(0, 0, 300, 300); float angle = 0; Random random = new Random(); int sectors = 24; int sweep = 360/sectors; for(int i=0; i<24;i++) { Color clr = Color.FromArgb(random.Next(0, 255),random.Next(0, 255), random.Next(0, 255)); g.FillPie(new SolidBrush(clr), rect, angle, sweep); angle += sweep; } g.Dispose(); }
答
要添加文本标签,拨打g.DrawString
。
编辑:要使文本像图像一样旋转图形对象到angle + sweep/2
并绘制文本。为了让它向下画,yopu可以绘制一个小宽度,并依靠字符包装;如果这不起作用,请使用g.MeasureString
来绘制字符vy character,并找出放置下一个字符的位置。
要旋转整个图表,请在绘制之前用度角调用g.RotateTransform
。 EDIT:这样的:
private void DrawPieChart()
{
Graphics g = this.CreateGraphics();
g.Clear(this.BackColor);
Rectangle rect = new Rectangle(0, 0, 300, 300);
float angle = 0;
Random random = new Random();
int sectors = 24;
int sweep = 360/sectors;
g.RotateTransform(90); //Rotates by 90 degrees
for(int i=0; i<24;i++)
{
Color clr = Color.FromArgb(random.Next(0, 255),random.Next(0, 255), random.Next(0, 255));
g.FillPie(new SolidBrush(clr), rect, angle, sweep);
angle += sweep;
}
g.Dispose();
}
动画的转动,使一个场的角度,增加它上的计时器,和场传递给g.RotateTransform
。
另外,绘制事物的正确方法是处理控件的Paint
事件,并使用e.Graphics
进行绘制。然后,当你想重画它,请致电Invalidate
。为防止闪烁,请在构造函数中调用this.SetStyle(ControlStyles.DoubleBuffer, true);
。
您不需要在代码块中转义HTML。 (i SLaks 2009-06-23 01:19:50