Чтобы добавить текстовые метки, звоните g.DrawString
.
РЕДАКТИРОВАТЬ : Чтобы сделать текст верным, как ваше изображение, поверните графический объект к angle + sweep / 2
и нарисуйте свой текст. Чтобы заставить его рисовать вниз, yopu может рисовать его на небольшой ширине и полагаться на перенос символов; если это не сработает, нарисуйте его символ vy chaaracter и используйте g.MeasureString
, чтобы выяснить, куда поместить следующий символ.
Чтобы повернуть всю диаграмму, вызовите g.RotateTransform
с углом в градусах, прежде чем рисовать его. РЕДАКТИРОВАТЬ : как это:
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);
в конструкторе.