【问题标题】:.NET pie chart: how to add text to slices and rotate chart.NET 饼图:如何将文本添加到切片和旋转图表
【发布时间】:2009-06-22 23:28:21
【问题描述】:

下面的代码创建了一个 24 切片饼图。我该怎么做:

  1. 为每个切片添加文本标签,例如“命运之轮”。
  2. 旋转饼图?我希望它像“命运之轮”一样旋转。

    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();
    }
    

【问题讨论】:

  • 您不需要在代码块中转义 HTML。 (i
  • 抱歉,我不确定那里出了什么问题。

标签: c# graphics charts rotation pie-chart


【解决方案1】:

要添加文本标签,请致电g.DrawString

编辑:要使文本像您的图像一样垂直,请将 Graphics 对象旋转到 angle + sweep / 2,然后绘制文本。为了使它向下绘制,yopu 可以将其绘制为小宽度并依靠字符换行;如果这不起作用,请将其绘制为 vy 字符并使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 2023-04-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2021-12-23
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多