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

 更新时间:2022年02月12日 13:14:52   作者:七日谭  
这篇文章主要为大家详细介绍了C#实现在窗体上的统计图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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);

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

相关文章

  • 如何在C#项目中链接一个文件夹下的所有文件详解

    如何在C#项目中链接一个文件夹下的所有文件详解

    很多时候我们需要获取一个结构未知的文件夹下所有的文件或是指定类型的所有文件,下面这篇文章主要给大家介绍了关于如何在C#项目中链接一个文件夹下的所有文件,需要的朋友可以参考下
    2023-02-02
  • c# Winform 程序自动更新实现方法

    c# Winform 程序自动更新实现方法

    Winform程序自动更新我也是第一次做,网上找了自动更新的源码,后来又根据在网上看到的一些方法,自己试了很久,最终还是有写错误,所以花了钱让别人帮忙调试成功的,下面是我自己捣腾出来的,方便大家借鉴,如果有什么错误的地方欢迎指正
    2017-02-02
  • C#获取屏幕分辨率缩放比例的方法与示例

    C#获取屏幕分辨率缩放比例的方法与示例

    在C#中,获取屏幕分辨率缩放比例通常指的是Dpi缩放比例,它表示显示设备的独立像素与设备无关像素(96 DPI)的比例,这通常用于确保应用程序在不同分辨率和缩放设置的显示设备上都能正确显示,本文给大家介绍了C#获取屏幕分辨率缩放比例的方法与示例,需要的朋友可以参考下
    2024-07-07
  • C#中各种类型集合的特点详解

    C#中各种类型集合的特点详解

    这篇文章主要介绍了概述C#中各种类型集合的特点,这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中,下面我将概述C#中几种常用的集合类型及其特点,需要的朋友可以参考下
    2024-08-08
  • 用C#对ADO.NET数据库完成简单操作的方法

    用C#对ADO.NET数据库完成简单操作的方法

    用C#对ADO.NET数据库完成简单操作的方法...
    2007-03-03
  • C#文件读写操作详细操作指南

    C#文件读写操作详细操作指南

    这篇文章主要给大家介绍了关于C#文件读写操作详细操作指南,在后端开发中使用C#语言进行文件操作是一个常见的任务,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • C#WinFrom导出Excel过程解析

    C#WinFrom导出Excel过程解析

    这篇文章主要介绍了C#WinFrom导出Excel过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • C#使用MailAddress类发送html格式邮件的实例代码

    C#使用MailAddress类发送html格式邮件的实例代码

    这篇文章主要介绍如何使用C#的MailAddress类发送邮件的方法,大家参考使用吧
    2013-11-11
  • c# Graphics使用方法(画圆写字代码)

    c# Graphics使用方法(画圆写字代码)

    本文主要介绍了Graphics的使用方法,提供如何画圆、写字的代码,大家参考使用吧
    2014-01-01
  • C#时间戳基本使用方法详解

    C#时间戳基本使用方法详解

    这篇文章主要给大家介绍了关于C#时间戳基本使用方法的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友可以参考下
    2022-10-10

最新评论