.net c#动态生成饼状图报表

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

饼状图是一种常用的数据可视化方法,用于显示数据各个部分的占比情况。如何使用C#和Graphics动态生成饼状图报表,并将其嵌入到Windows应用程序中。

首先,需要准备好数据。假设有一个包含各个部分占比的列表,其中每个项包含部分名称和占比。可以通过下面的代码来生成一个随机数据列表:

List<Tuple<string, double>> data = new List<Tuple<string, double>>();
Random random = new Random();
double sum = 0;
for (int i = 1; i <= 5; i++)
{
    double value = random.Next(10, 50);
    sum += value;
    data.Add(new Tuple<string, double>("部分" + i, value));
}
// 计算百分比
foreach (var item in data)
{
    item.Item2 = item.Item2 / sum;
}


接下来,需要通过Graphics类来创建一个画布,并在其上绘制饼状图。可以通过下面的代码来实现:

Bitmap bitmap = new Bitmap(400, 400);
Graphics graphics = Graphics.FromImage(bitmap);

需要定义一个起始角度变量,用于确定绘制饼状图的起始角度。代码如下:

double startAngle = -90;

接着,需要根据数据来绘制饼状图。可以通过下面的代码来实现:

SolidBrush[] brushes = { new SolidBrush(Color.Red), new SolidBrush(Color.Yellow), new SolidBrush(Color.Blue), new SolidBrush(Color.Green), new SolidBrush(Color.Orange) };
double angle = 0;
for (int i = 0; i < data.Count; i++)
{
    angle = data[i].Item2 * 360;
    graphics.FillPie(brushes[i], new Rectangle(100, 50, 200, 200), (float)startAngle, (float)angle);
    startAngle += angle;
}

最后,需要将绘制的饼状图转换为图片,并将其嵌入到Windows应用程序中。可以通过下面的代码来实现:

pictureBox1.Image = bitmap;

至此,就完成了一个动态生成的饼状图报表。通过对数据的处理和可视化,能够更好地了解数据占比情况,并更好地进行数据分析和决策。

下面写一个使用实体生成的饼状图例子,首先创建实体:

        public class StatCount
        {
            /// <summary>
            /// 名称
            /// </summary>
            public string name { get; set; }
            /// <summary>
            /// 数量
            /// </summary>
            public int count { get; set; }
        }

从数据库中查找数据,并将结果填充到实体集合中.然后调用方法.

        private void Draw(List<StatCount> list)
        {
            int width = zpic.Width;
            int height = zpic.Height;
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(width, height);
            //创建Graphics类对象
            Graphics g = Graphics.FromImage(image);
            Pen p = new Pen(new SolidBrush(Color.Blue));
            Point p1 = new Point(0, 0);
            Size s = new Size(width, height);
            Rectangle trct = new Rectangle(p1, s);
            g.FillEllipse(new SolidBrush(Color.Red), trct);
            Font font = new Font("宋体", 10, FontStyle.Regular);
            int total = list.Sum((w) => { return w.count; });
            //写文字
            int y = 10;
            for (int i = 0; i < list.Count; i++)
            {
                //画大饼
                Color color = ColorIndex(i);
                float f = float.Parse(list[i].count.ToString()) / float.Parse(total.ToString());
                g.DrawString(list[i].name + " " + list[i].count.ToString(), font, new SolidBrush(color), 0, y);
                y = y + 15;
            }
            zpic.BackgroundImage = image;
        }

效果图如下图所示:

附件:下载该文件资源,减少时间成本(增值服务)
不商用,只限学习使用,使用后请删除
上传者拥有该资源完整版权,下载既表明已授权您可以进行报备商用,无报备或者使用后报备,视为侵权,报备后使用,为合法有效使用,报备方式,下载后,在下载列表,点击报备,填写使用场景即可
File Source
.rar
240.73 KB
文件部分展示图(单击放大)
.net c#动态生成饼状图报表.net c#动态生成饼状图报表
留言
该资源可下载
File Source
.rar
240.73 KB
.net c#动态生成饼状图报表.net c#动态生成饼状图报表
最新结算
股权转让协议意向书模板
类型: .docx 金额: CNY 2.23¥ 状态: 待结算 详细>
股权转让协议意向书模板
类型: .docx 金额: CNY 0.28¥ 状态: 待结算 详细>
CSS3图片向上3D翻转渐隐消失特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3图片向上3D翻转渐隐消失特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
.net c# 将金额转人名币大写金额
类型: .rar 金额: CNY 2.39¥ 状态: 待结算 详细>
.net c# 将金额转人名币大写金额
类型: .rar 金额: CNY 0.3¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 2.23¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 0.28¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 2.23¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 0.28¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章