文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#实现在窗体上的统计图效果

2024-04-02 19:55

关注

本文实例为大家分享了C#实现在窗体上的统计图,供大家参考,具体内容如下

忽然要用到C#来制作统计图,起初不太清除怎么弄,看了一些代码实现统计图的文档。终于实现了条形图的设置,后来又需要饼状图。本来还是想自己画的后来才发现C#是有这种窗体控件的,控件画比我强太多了。

这是我自己做的条形图的函数:

public static int width = 400, height = 400;//声明宽与高
  Bitmap bitmap = new Bitmap(width, height);//创建一个绘图对象
    //这四个参数分别是表的列名,tp1,tp2,tp3均是条形的长,s1,s2,s3代表每个条形的数据
    public void createImage(string s, int tp1, int tp2,int tp3, string s1, string s2,string s3)
        {
            Graphics g = Graphics.FromImage(bitmap);
            g.FillRectangle(Brushes.Black, 0, 0, 400, 400);//边框
            try
            {
                g.Clear(Color.White);
                //创建6个brush,用于填充颜色
                Brush brush1 = new SolidBrush(Color.White);
                Brush brush2 = new SolidBrush(Color.Black);
                Brush brush3 = new SolidBrush(Color.Red);
                Brush brush4 = new SolidBrush(Color.Green);
                Brush brush5 = new SolidBrush(Color.Orange);
                Brush brush6 = new SolidBrush(Color.DarkBlue);
                //创建两个Font对象,用于设置字体
                Font font1 = new Font("宋体", 16, FontStyle.Bold);
                Font font2 = new Font("Courier New", 8);

                g.FillRectangle(brush1, 0, 0, width, height);//绘制背景图
                g.DrawString(s, font1, brush2, new Point(90, 20));//绘制

                Point p1 = new Point(30, 300);
                Point p2 = new Point(330, 300);
                //这里用到的减式是由于画布的坐标系和数学中的坐标系不同,参考下面的图
                g.DrawString(s1, font2, brush2, new Point(90, 285 - (tp1 * 10)));
                g.DrawString(s2, font2, brush2, new Point(150, 285 - (tp2 * 10)));
                g.DrawString(s2, font2, brush2, new Point(210, 285 - (tp3 * 10)));
                g.FillRectangle(brush3, 90, 300 - (tp1 * 10), 50, tp1 * 10);//
                g.FillRectangle(brush4, 150, 300 - (tp2 * 10), 50, tp2 * 10);//
                g.FillRectangle(brush5, 210, 300 - (tp3 * 10), 50, tp3 * 10);
                g.DrawLine(new Pen(Color.Black), p1, p2);//绘制一条直线
                pictureBox1.Image = bitmap;
            }
            catch (Exception)
            {
                throw;
            }
        }

画布中的坐标系:

如果换成C#中的chart控件来做就简单多了

1.找到控件的Legends属性把其中的Enabled改成False。
2.找到控件的Series属性把其中的ChartType改成你需要的表形式。
3.接下就是为chart控件添加数据。

添加数据的方式之一:

string[] xData = { "经理", "总监", "销售" };
  int[] yData = {10, 20, 30};
  chart1.Series[0]["PieLabelStyle"] = "Outside";//将文字移到外侧
  chart1.Series[0]["PieLineColor"] = "Black";//绘制黑色的连线。
  chart1.Series[0].Points.DataBindXY(xData, yData);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯