C# .NET饼图:如何将文本添加到切片和旋转图表

C# .NET饼图:如何将文本添加到切片和旋转图表,c#,graphics,charts,rotation,pie-chart,C#,Graphics,Charts,Rotation,Pie Chart,下面的代码创建了一个24层饼图。我如何: 将文本标签添加到“命运之轮”的每个部分 旋转饼图?我希望它像“命运之轮”一样旋转 private void DrawPieChart() { Graphics g=this.CreateGraphics(); g、 清晰(此为背景色); 矩形rect=新矩形(0,0,300,300); 浮动角度=0; 随机=新随机(); int扇区=24; int扫描=360/扇区; 对于(int i=0;i要添加文本标签,请调用g.DrawString 编辑:若要使文

下面的代码创建了一个24层饼图。我如何:

  • 将文本标签添加到“命运之轮”的每个部分
  • 旋转饼图?我希望它像“命运之轮”一样旋转

    private void DrawPieChart()
    {
    Graphics g=this.CreateGraphics();
    g、 清晰(此为背景色);
    矩形rect=新矩形(0,0,300,300);
    浮动角度=0;
    随机=新随机();
    int扇区=24;
    int扫描=360/扇区;
    
    对于(int i=0;i要添加文本标签,请调用
    g.DrawString

    编辑:若要使文本垂直于图像,请将图形对象旋转到
    角度+扫描/2
    ,然后绘制文本。若要使文本向下绘制,yopu可能能够以较小的宽度绘制文本,并依赖于字符环绕;如果不起作用,请将其绘制为字符,然后使用
    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();
        }
    
    private void DrawPieChart()
    {
    Graphics g=this.CreateGraphics();
    g、 清晰(此为背景色);
    矩形rect=新矩形(0,0,300,300);
    浮动角度=0;
    随机=新随机();
    int扇区=24;
    int扫描=360/扇区;
    g、 旋转变换(90);//旋转90度
    
    对于(inti=0;iYou不需要在代码块中转义HTML)。
        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();
        }