C# winform动态画扇形统计图

数据表:
在这里插入图片描述
将数据查询出来后,放在一个DataTable(以下变量dt),查询代码省略
找到要画图的容器,在容器的Paint事件中写上代码:

private void ShangXing_Paint(object sender, PaintEventArgs e)
        {
            Graphics ShangXingTongJi = e.Graphics;//为控件创建绘画
            //ShangXingTongJi.Clear(ShangXing.BackColor);
            Pen pen = new Pen(Color.Black, 2);//创建笔
            ShangXingTongJi.DrawEllipse(pen, 50, 140, 300, 300);//画圆
            Brush myBrush = new SolidBrush(Color.Red);//填充颜色
            Random myRandom = new Random();//随机数
            float ShiDuShu = 0;//开始度数
            float ZhongDuShu = 0;//最终度数
            int ZongShu = 0;//数量总数
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ZongShu += Convert.ToInt32(dt.Rows[i]["数量"]);
            }
            for (int i = 1; i < dt.Rows.Count + 1; i++)
            {
                string ShuLiang = dt.Rows[i - 1]["数量"].ToString();//单个物品数
                myBrush = new SolidBrush(Color.FromArgb(myRandom.Next(0, 200), myRandom.Next(0, 200),
                    myRandom.Next(0, 200)));//随机颜色
                ShangXingTongJi.DrawString("●" + dt.Rows[i - 1]["物品名称"] + ":" + ShuLiang,
                    new Font("宋体", 10), myBrush, 10, 10 * i * 2);//画字
                decimal DuShu = Convert.ToDecimal(ShuLiang) / ZongShu * 360;//(占数:总数)*360=度数
                ZhongDuShu = Convert.ToInt32(DuShu);
                ShangXingTongJi.FillPie(myBrush, 50, 140, 300, 300, ShiDuShu, ZhongDuShu);
                ShiDuShu = ShiDuShu + ZhongDuShu;
            }
        }

效果图:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值