精华内容
下载资源
问答
  • MS Chart Winform例子

    2014-08-18 10:01:17
    经验证,完美运行,好用是绝对的,错过了这一次,可是没有下一次啦。。
  • Chart winform统计图

    2014-07-08 09:40:20
    统计图,包括柱状图 饼图,折线图 要是做个做3D的话改个属性为true即可
  • winform Chart

    2017-09-19 18:18:14
    随鼠标移动会出现平行于x轴,y轴的直线...keys:winform Chart 实现鼠标移动 cursor 辅助线 十字架 示波器效果 鼠标随动 其他:如果曲线点数过多,或者鼠标间隔过小可能会出现卡顿,可以优化查找曲线原始点的查找算法。
  • LiveChart控件Demo样例

    2020-10-07 16:00:00
    LiveCharts是一款简单,灵活,方便的C#开源图表控件,基于LiveCharts可以定制各种各样的统计图表和动态图表。
  • 展示一个小Demo 在窗口中读取txt文件数据,并使用chart控件绘制曲线。 首先,在空白的窗体上拖入一个按钮,命名为打开,执行打开文件职能;一个文本框,用来显示文件的路径;再拖入一个chart控件。 在chart控件中...
  • C# 学习笔记六 WinForm Chart

    千次阅读 2019-02-23 14:34:12
    【207】WinForm Chart类 目录: 在工具箱中找到 Chart 控件并使用 设置 Chart 属性 代码中设置属性 属性中设置属性 Chart 类说明 ChartAreas ChartAreaCollection 类 ChartArea 类 Axis 类 ...

    【207】WinForm Chart类

    目录:

    1. 在工具箱中找到 Chart 控件并使用
    2. 设置 Chart 属性
    3. Chart 类说明

            先简单说一下,从图中可以看到一个 Chart 可以绘制多个 ChartArea,每个 ChartArea 都可以绘制多条 Series。ChartArea 就是就是绘图区域,可以有多个 ChartArea 叠加在一起,Series 是画在 ChartAarea 上的,Series 英文意思是“序列、连续”,其实就是数据线,它可以是曲线、点、柱形、条形、饼图...可以注意该 Chart 当数据非常多的时候可以通过鼠标选择查看区域,进一步拖拽横纵向滚动条来缩小曲线图查看。

    Chart.ChartAreas 属性:获取用于存储 ChartArea 对象的只读 ChartAreaCollection 对象。ChartArea 对象用于绘制一个或多个图表。
    Chart.Series 属性:获取 SeriesCollection 对象。Series 对象存储 DataPoint 的对象,以及数据特性。

    参考:C# MSChart图表控件使用介绍


    1. 在工具箱中找到 Chart 控件并使用

            

    2. 设置 Chart 属性

      设置MSChart控件属性方法两种:1)代码中设置属性;2)属性表设置属性

      1)代码中设置属性:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    ChartArea1属性设置///

    //设置网格的样式

    chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineColor = Color.LightGray;

    chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineColor = Color.LightGray;

    chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.IntervalOffset = 1;

    chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.IntervalOffset = 0;

    chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Interval = 2;

    chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Interval = 10;

    chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;

    chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.DashDot;

    //设置坐标轴样式

    chart1.ChartAreas["ChartArea1"].AxisX.Title = "随机数";

    chart1.ChartAreas["ChartArea1"].AxisY.Title = "数值";

    chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;

    chart1.ChartAreas[0].AxisY.IntervalOffset = 10;

    chart1.ChartAreas[0].AxisY.Interval = 20;

    chart1.ChartAreas[0].AxisY.Minimum = -10;

    //启用3D显示

    chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;

    //设置图表背景

    chart1.ChartAreas[0].BackColor = Color.FromArgb(0x87, 0xCC, 0xFF, 0xFF);

    chart1.ChartAreas[0].BackGradientStyle = GradientStyle.TopBottom;

    chart1.ChartAreas[0].ShadowColor = Color.Gainsboro;

    chart1.ChartAreas[0].ShadowOffset = 5;

     

    //Series属性设置///

    //设置显示类型-线型

    chart1.Series["随机数"].ChartType = SeriesChartType.Spline;

    //设置坐标轴Value显示类型

    chart1.Series["随机数"].XValueType = ChartValueType.Int32;

    //是否显示标签的数值

    chart1.Series["随机数"].IsValueShownAsLabel = true;

    //设置标记图案

    chart1.Series["随机数"].MarkerStyle = MarkerStyle.Circle;

    chart1.Series["随机数"].MarkerSize = 8;

    chart1.Series["随机数"].MarkerColor = Color.FromArgb(0x99, 0xFF, 0x00);

    chart1.Series["随机数"].MarkerBorderColor = Color.Green;

    chart1.Series["随机数"].MarkerBorderWidth = 2;

    //设置图案颜色

    chart1.Series["随机数"].Color = Color.Green;

    //设置图案的宽度

    chart1.Series["随机数"].BorderWidth = 2;

    chart1.Series[0].BorderDashStyle = ChartDashStyle.Dash;

    chart1.Series[0].BorderColor = Color.Red;

    chart1.Series[0].LabelAngle = 45;

    chart1.Series[0].LabelBackColor = Color.Aqua;

    chart1.Series[0].LabelBorderColor = Color.Black;

     

    //添加随机数

    Random rd = new Random();

    for (int i = 1; i < 20; i++)

    {

        //chart1.Series["随机数"].Points.AddXY(i, rd.Next(100));

        chart1.Series["随机数"].Points.AddY(rd.Next(100));

    }

     

    for (int i = 0; i < chart1.Series[0].Points.Count; i++)

    {

        if (chart1.Series[0].Points[i].YValues[0] >= 67.0)

            chart1.Series[0].Points[i].MarkerBorderColor = Color.DeepPink;

        else if(chart1.Series[0].Points[i].YValues[0] >= 33.3)

            chart1.Series[0].Points[i].MarkerBorderColor = Color.DarkOrange;

        else

            chart1.Series[0].Points[i].MarkerBorderColor = Color.Gray;

    }

      2)属性中设置属性:

      步骤1:设置ChartArea属性

      点击ChartAreas(集合)后面的小按钮进入对话框,设置对应的属性

      步骤2:设置Series属性
      点击Series(集合)后面的小按钮进入对话框,设置对应属性

    3. Chart 类说明

    • ChartAreas:获取用于存储 ChartArea 对象的只读 ChartAreaCollection 对象。
      • ChartAreaCollection 类:表示 ChartArea 对象的集合。
        • Count:获取 Collection<T> 中实际包含的元素数。
        • Item[Int32]:获取或设置指定索引处的元素。
        • Item[String]:获取或设置具有指定名称的图表元素。
      • ChartArea 类:表示图表图像上的图表区域。
        • AxisX:获取或设置表示主 X 轴的 Axis 对象。
        • AxisY:获取或设置表示主 Y 轴的 Axis 对象。
        • BackColor:获取或设置 ChartArea 对象的背景色。
        • BackGradientStyle:获取或设置图表区域的背景渐变方向,还确定是否使用渐变。
        • ShadowColor:获取或设置 ChartArea 对象的阴影颜色。
        • ShadowOffset:获取或设置 ChartArea 对象的阴影偏移量(以像素为单位)。
      • Axis 类:提供管理 Chart 控件中的轴的方法和属性。
        • MajorGrid:获取或设置用于设置轴的主要网格线属性的 Grid 对象。
        • Title:获取或设置轴的标题。
        • ArrowStyle:获取或设置二维轴的箭头样式;此样式不适用于三维图表区域。
        • Interval:获取或设置轴的间隔。(坐标轴数据间隔)
        • IntervalOffset:获取或设置轴的间隔偏移量。(坐标轴第一个数据距离原点的间隔)
        • Maximum:获取或设置轴的最大值。
        • Minimum:获取或设置轴的最小值。
      • Grid 类:提供用于管理 Axis 对象的主要和次要网格的方法和属性。
        • Interval:获取或设置主要网格线或次要网格线之间的间隔。(相邻两个网格线间的间隔,int)
        • IntervalType:获取或设置主要网格线或次要网格线的间隔类型。(计算单位)
        • IntervalOffset:获取或设置网格线的偏移量。(第一个网格线偏移坐标轴的间隔,int)
        • IntervalOffsetType:获取或设置主要网格线和次要网格线的间隔偏移量类型。(计算单位)
        • LineColor:获取或设置网格线颜色。
        • LineDashStyle:获取或设置网格的线型。
        • LineWidth:获取或设置主要网格线和次要网格线的线条宽度。
    • Series:获取 SeriesCollection 对象。
      • SeriesCollection 类:表示 Series 对象的集合。
        • Count:获取 Collection<T> 中实际包含的元素数。
        • Item[Int32]:获取或设置指定索引处的元素。
        • Item[String]:获取或设置具有指定名称的图表元素。
      • Series 类:存储数据点和序列特性。
        • ChartType:获取或设置序列的图表类型。
          • SeriesChartType 枚举:指定 Series 的图表类型。
            • Area:面积图类型。
            • Line:折线图类型。
            • Spline:样条图类型。(光滑曲线)
            • Column:柱形图类型。
            • Pie:饼图类型。
            • Doughnut:圆环图类型。
        • XValueType:获取或设置沿 X 轴绘制的值类型。
        • YValueType:获取或设置序列所存储的数据点中的 Y 值数据类型。
          • ChartValueType 枚举:指定各种图表属性的值类型。
            • Auto:属性类型由图表控件自动设置。
            • Int32:Int32 值。
            • DateTime:一个 DateTime 值。
            • Time:[DateTime] 值的时间部分。
        • IsValueShownAsLabel:获取或设置一个标志,该标志指示是否在标签上显示数据点的值。
        • Points:获取 DataPointCollection 对象。(数据表中的数据点)
          • DataPointCollection 类:表示 DataPoint 对象的集合。
            • Count:获取 Collection<T> 中实际包含的元素数。
            • Item:获取或设置指定索引处的元素。(针对每一个 DataPoint 对象)
            • AddXY(Double, Double):使用指定的 X 值和 Y 值将 DataPoint 对象添加到集合末尾。

              1

              2

              3

              4

              5

              6

              7

              8

              ///实现将时间数据赋值到 X 轴///

              //第一步:将 X 轴数值类型设置为 Time

              chart1.Series[0].XValueType = ChartValueType.Time;

               

              //第二步:将 DateTime 数据转为 double 类型

              DateTime dt = DateTime.Parse("2000/8/8  12:08:01");

              double d = Double.Parse(dtzh.Rows[i]["Fo"].ToString());

              chart1.Series[0].Points.AddXY(dt.ToOADate(), d);

            • AddY(Double):使用指定的 Y 值将 DataPoint 对象添加到集合末尾。
            • Clear:从 Collection<T> 中移除所有元素。
            • Insert:将元素插入 Collection<T> 的指定索引处。
            • InsertXY:插入具有指定 X 值和一个或多个指定 Y 值的数据点。
            • InsertY:插入具有一个或多个指定 Y 值的数据点。
            • Remove:从 Collection<T> 中移除特定对象的第一个匹配项。
            • RemoveAt:移除 Collection<T> 的指定索引处的元素。
          • DataPoint 类:表示存储在 DataPointCollection 类中的数据点。
            • XValue:获取或设置数据点的 X 值。
            • YValues:获取或设置数据点的 Y 值。(数组的形式,值一般是[0])
            • Color:获取或设置数据点的颜色。
            • BorderColor:获取或设置数据点的边框颜色。
        • MarkerStyle:获取或设置标记样式。
          • MarkerStyle 枚举:获取或设置标记样式。
            • MarkerStyle 枚举:指定标记的样式。
            • None:不为序列或数据点显示任何标记。
            • Square:显示正方形标记。
            • Circle:显示圆形标记。
            • Diamond:显示菱形标记。
            • Triangle:显示三角形标记。
            • Cross:显示十字形标记。
        • MarkerColor:获取或设置标记颜色。(数据点)
        • MarkerSize:获取或设置标记的大小。
        • MarkerBorderColor:获取或设置标记的边框颜色。
        • MarkerBorderWidth:获取或设置标记的边框宽度。
           
        • Color:获取或设置数据点的颜色。(数据点和连接的线)
        • BorderWidth:获取或设置数据点的边框宽度。
        • BorderDashStyle:获取或设置数据点的边框样式。
        • BorderColor:获取或设置数据点的边框颜色。
        • EmptyPointStyle:获取或设置标记为空的点的绘制样式。
           
        • LabelBackColor:获取或设置数据点标签的背景色。
        • LabelBorderColor:获取或设置数据点标签的边框颜色。
        • LabelBorderDashStyle:获取或设置标签的边框样式。
        • LabelBorderWidth:获取或设置标签的边框宽度。
           
        • IsVisibleInLegend:获取或设置一个标志,该标志指示是否在图例中显示项。
        • LegendText:获取或设置图例中项的文本。
    • Titles:存储 Chart 控件使用的所有 Title 对象。
      • TitleCollection 类:表示 Title 对象的集合。
        • Count:获取 Collection<T> 中实际包含的元素数。
        • Item[Int32]:获取或设置指定索引处的元素。
        • Add(T):将对象添加到 Collection<T> 的结尾处。
        • Add(String):将具有指定名称的 Title 对象添加到集合的末尾。
        • Clear:从 Collection<T> 中移除所有元素。
        • ClearItems:从 Collection<T> 中移除所有元素。
      • Title 类:表示整个图表图像的标题。
        • Alignment:获取或设置标题的对齐方式。
        • BackColor:获取或设置标题的背景色。
        • Font:获取或设置标题的字体。
        • ForeColor:获取或设置标题文本的颜色。
        • ShadowColor:获取或设置标题的阴影颜色。
        • ShadowOffset:获取或设置标题的阴影偏移量(以像素为单位)。
        • Position:获取或设置可用于获取或设置标题位置的 ElementPosition 对象。
        • Text:获取或设置标题的文本。
        • TextOrientation:获取或设置标题中文本的方向。
        • TextStyle:获取或设置标题的文本样式。
    • Legends:存储 Chart 控件使用的所有 Legend 对象。
      • LegendCollection 类:表示 Legend 对象的集合。
        • Count:获取 Collection<T> 中实际包含的元素数。
        • Item[Int32]:获取或设置指定索引处的元素。
        • Item[String]:获取或设置具有指定名称的图表元素。
      • Legend 类:表示图表图像的图例。
        • Alignment:获取或设置图例的对齐方式。
          • StringAlignment 枚举:指定文本字符串相对于其布局矩形的对齐方式。
            • Near:如果图例停靠到顶部或底部,则 Near 位于左侧;如果图例停靠到左侧或右侧,则 Near 位于顶部。
            • Center:总是将图例垂直或水平居中。
            • Far:如果图例停靠到顶部或底部,则 Far 位于右侧;如果图例停靠到左侧或右侧,则 Far 位于底部。
        • Title:获取或设置图例标题的文本。
        • ShadowColor:获取或设置图例的阴影颜色。
        • ShadowOffset:获取或设置图例的阴影偏移量(以像素为单位)。
    展开全文
  • 做电子开发的,会经常需要使用虚拟仪器,除了labview 感觉winform是一个不错的选择 然而虚拟示波器更常用,去年和同学参加个比赛 后来示波器都没做好 现在抽空自己学习写了个
  • 具体内容教程可看博客:https://www.cnblogs.com/luxiaoguogege/p/11632240.html
  • 版本6.0.0.1720. 仅用于学习研究,商业目的请购买正版.
  • winform chart动态跟进式折线图
  • WPF Winform Chart

    2017-08-23 13:37:17
    WPF winform chart 各种数据绑定方式,可以使用VS2010直接打开。
  • winformchart控件的简单应用,饼图、柱状图、曲线图
  • 输入livechart,显示如下: 2、添加控件 工具栏,右击选择添加选项卡,输入livechart。右击livechart,选择项,点击浏览按钮,选择Debug中LiveCharts.WinForms.dll文件,控件会自动加载到工具栏。 3、添加引用及...

    1、添加LiveCharts引用
    解决方案,右击选择管理NuGut程序包。输入livechart,显示如下:

    在这里插入图片描述

    2、添加控件
    工具栏,右击选择添加选项卡,输入livechart。右击livechart,选择项,点击浏览按钮,选择Debug中LiveCharts.WinForms.dll文件,控件会自动加载到工具栏。
    在这里插入图片描述

    3、添加引用及生成曲线

    using LiveCharts;
    using LiveCharts.Wpf;
    using 
    展开全文
  • 开发平台VS2010 chart控件动态更新折线图 视图展现效果包括压缩式、跟进式及缩放式3种 (在shining0提供的代码基础上做的修改,在此表示感谢)
  • Winform Chart

    2017-08-15 10:49:00
    第一步:使用VS创建Winform项目; 第二步:工具箱中拖入Chart控件; 第三步:所有控件拖入其他控件如下图所示: using System; using System.Collections.Generic; using System.Drawing; using System....

    Chart图表解释说明:

     

     

    第一步:使用VS创建Winform项目;

    第二步:工具箱中拖入Chart控件;

    第三步:所有控件拖入其他控件如下图所示:

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Windows.Forms.DataVisualization.Charting;
    
    namespace ZB.PISS.StatisticsSys
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                List<int> x = new List<int> { 1, 2, 3, 4, 5 };
    
                List<int> a = new List<int> { 11, 22, 30, 40, 50 };
                List<int> b = new List<int> { 22, 14, 35, 24, 44 };
                List<int> c = new List<int> { 33, 22, 33, 44, 28 };
                var dd = chartDemo.Series;
    
                this.chartDemo.Series["name1"].Points.DataBindXY(x, a);
                this.chartDemo.Series["name2"].Points.DataBindXY(x, b);
                this.chartDemo.Series["name3"].Points.DataBindXY(x, c);
    

     Winfrom chart DataBindXY X内容显示不全解决方法如下:

     
      

    chartImage.ChartAreas["ChartArea1"].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None;
    chartImage.ChartAreas["ChartArea1"].AxisX.LabelStyle.Interval = 1;
    chartImage.ChartAreas["ChartArea1"].AxisX.LabelStyle.IsStaggered = false;

     

    //Chart Title
                this.chartDemo.Titles.Add("人员信息统计").Alignment = ContentAlignment.MiddleCenter;
                Color[] arr = chartDemo.PaletteCustomColors;
                this.cmbPattern.DataSource = PatternList();
                this.cmbType.DataSource = SeriesTypeList();
    
                //Axis Title
                this.chartDemo.ChartAreas[0].AxisX.Title = "月份信息";
                this.chartDemo.ChartAreas[0].AxisY.Title = "数量信息";
    
                //Lable
                //          #VALX 显示当前图例的X轴的对应文本(或数据)
                //#VAL, #VALY, 显示当前图例的Y轴的对应文本(或数据)
                //#VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据)
                //#SER: 显示当前图例的名称
                //#LABEL 显示当前图例的标签文本
                //#INDEX 显示当前图例的索引
                //#PERCENT 显示当前图例的所占的百分比
                //#TOTAL 总数量
                //#LEGENDTEXT 图例文本
                this.chartDemo.Series[0].Label = "#VAL";
                this.chartDemo.Series[1].Label = "#VAL";
                this.chartDemo.Series[2].Label = "#VAL";
    
                //Marker
                this.chartDemo.Series[0].MarkerSize = 20;
                this.chartDemo.Series[1].MarkerSize = 20;
                this.chartDemo.Series[2].MarkerSize = 20;
                this.chartDemo.Series[0].MarkerStyle = MarkerStyle.Circle;
                this.chartDemo.Series[1].MarkerStyle = MarkerStyle.Square;
                this.chartDemo.Series[2].MarkerStyle = MarkerStyle.Diamond;
    
            }
    
            #region ChartType
            public List<string> SeriesTypeList()
            {
                List<string> list = new List<string>();
                foreach (string item in Enum.GetNames(typeof(SeriesChartType)))
                {
                    list.Add(item);
                }
                return list;
            }
    
            private void cmbType_SelectedValueChanged(object sender, EventArgs e)
            {
                try
                {
                    SeriesChartType type = (SeriesChartType)Enum.Parse(typeof(SeriesChartType),
                  this.cmbType.Text);
    
                    this.chartDemo.Series["name1"].ChartType = type;
                    this.chartDemo.Series["name2"].ChartType = type;
                    this.chartDemo.Series["name3"].ChartType = type;
                }
                catch
                {
                    return;
                }
            }
    
            #endregion
    
            #region Pattern
            public List<string> PatternList()
            {
                List<string> list = new List<string>();
                foreach (string item in Enum.GetNames(typeof(ChartColorPalette)))
                {
                    list.Add(item);
                }
                return list;
            }
    
            private void cmbPattern_SelectedValueChanged(object sender, EventArgs e)
            {
                ChartColorPalette palette = (ChartColorPalette)Enum.Parse(typeof(ChartColorPalette),
                    this.cmbPattern.Text);
                this.chartDemo.Palette = palette;
            }
    
            #endregion
    
        }
    }

    运行效果如下:

     资源源码下载地址:http://download.csdn.net/my     Winfrom Chart

    补充:

    一:实现3D效果

     private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
            {
                if (this.comboBox1.Text.Equals("3D"))
                {
                     //this.chartDemo.ChartAreas[0].Area3DStyle.Enable3D = true;
                     //开启三维模式的原因是为了避免标签重叠
                     this.chartDemo.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;//开启三维模式;PointDepth:厚度BorderWidth:边框宽
                     this.chartDemo.ChartAreas["ChartArea1"].Area3DStyle.Rotation = 15;//起始角度
                     this.chartDemo.ChartAreas["ChartArea1"].Area3DStyle.Inclination = 30;//倾斜度(0~90)
                     this.chartDemo.ChartAreas["ChartArea1"].Area3DStyle.LightStyle = LightStyle.Realistic;//表面光泽度
                     this.chartDemo.ChartAreas["ChartArea1"].AxisX.Interval = 1; //决定x轴显示文本的间隔,1为强制每个柱状体都显示,3则间隔3个显示
                     this.chartDemo.ChartAreas["ChartArea1"].AxisX.LabelStyle.Font = new Font("宋体", 9, FontStyle.Regular);
                     this.chartDemo.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
                }
                else
                {
                    this.chartDemo.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
                }
            }

     

    转载于:https://www.cnblogs.com/YYkun/p/7363878.html

    展开全文
  • Winform简单的FlowChart流程图,功能简单, 可用于小项目; 基于FlowChart.Net改的
  • 强大的Winform Chart图表控件使用说明

    万次阅读 多人点赞 2019-04-29 16:45:25
    强大的Winform Chart图表控件使用说明引言使用说明使用示例资料 引言 以前经常开发网页端的软件,图表组件一般用echart,功能和样式都非常齐全。但是当用winform开发时,类似的组件就很少了,而且稍微好点的都还...

    强大的Winform Chart图表控件使用说明

    引言

    以前经常开发网页端的软件,图表组件一般用echart,功能和样式都非常齐全。但是当用winform开发时,类似的组件就很少了,而且稍微好点的都还收费。
    后来探索了下winform自带的 chart控件,发现其功能非常强大,只要你有好看的设计图,基本上都可以按设计图调整出来,下面展示下自己做技术测试的图片:
    winform chart使用样例

    使用说明

    工具箱-数据分组中我们就可以看到chart控件,使用时拖拽到界面即可。可以通过属性面板设置其样式,也可以通过代码来调整样式。设置的属性可参照:
    https://www.cnblogs.com/arxive/p/5861960.html

    总结了部分设置chart样式功能的通用类:

    	public class ChartHelper
        {
            /// <summary>
            /// Name:添加序列
            /// Author:by boxuming 2019-04-28 13:59
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="seriesName">序列名称</param>
            /// <param name="chartType">图表类型</param>
            /// <param name="color">颜色</param>
            /// <param name="markColor">标记点颜色</param>
            /// <param name="showValue">是否显示数值</param>
            public static void AddSeries(Chart chart, string seriesName, SeriesChartType chartType, Color color, Color markColor, bool showValue = false)
            {
                chart.Series.Add(seriesName);
                chart.Series[seriesName].ChartType = chartType;
                chart.Series[seriesName].Color = color;
                if (showValue)
                {
                    chart.Series[seriesName].IsValueShownAsLabel = true;
                    chart.Series[seriesName].MarkerStyle = MarkerStyle.Circle;
                    chart.Series[seriesName].MarkerColor = markColor;
                    chart.Series[seriesName].LabelForeColor = color;
                    chart.Series[seriesName].LabelAngle = -90;
                }
            }
    
            /// <summary>
            /// Name:设置标题
            /// Author:by boxuming 2019-04-28 14:25
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="chartName">图表名称</param>
            public static void SetTitle(Chart chart, string chartName, Font font, Docking docking, Color foreColor)
            {
                chart.Titles.Add(chartName);
                chart.Titles[0].Font = font;
                chart.Titles[0].Docking = docking;
                chart.Titles[0].ForeColor = foreColor;
            }
    
            /// <summary>
            /// Name:设置样式
            /// Author:by boxuming 2019-04-23 14:04
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="backColor">背景颜色</param>
            /// <param name="foreColor">字体颜色</param>
            public static void SetStyle(Chart chart, Color backColor, Color foreColor)
            {
                chart.BackColor = backColor;
                chart.ChartAreas[0].BackColor = backColor;
                chart.ForeColor = Color.Red;
            }
    
            /// <summary>
            /// Name:设置图例
            /// Author:by boxuming 2019-04-23 14:30
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="docking">停靠位置</param>
            /// <param name="align">对齐方式</param>
            /// <param name="backColor">背景颜色</param>
            /// <param name="foreColor">字体颜色</param>
            public static void SetLegend(Chart chart, Docking docking, StringAlignment align, Color backColor, Color foreColor)
            {
                chart.Legends[0].Docking = docking;
                chart.Legends[0].Alignment = align;
                chart.Legends[0].BackColor = backColor;
                chart.Legends[0].ForeColor = foreColor;
            }
    
            /// <summary>
            /// Name:设置XY轴
            /// Author:by boxuming 2019-04-23 14:35
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="xTitle">X轴标题</param>
            /// <param name="yTitle">Y轴标题</param>
            /// <param name="align">坐标轴标题对齐方式</param>
            /// <param name="foreColor">坐标轴字体颜色</param>
            /// <param name="lineColor">坐标轴颜色</param>
            /// <param name="arrowStyle">坐标轴箭头样式</param>
            /// <param name="xInterval">X轴的间距</param>
            /// <param name="yInterval">Y轴的间距</param>
            public static void SetXY(Chart chart, string xTitle, string yTitle, StringAlignment align, Color foreColor, Color lineColor, AxisArrowStyle arrowStyle, double xInterval, double yInterval)
            {
                chart.ChartAreas[0].AxisX.Title = xTitle;
                chart.ChartAreas[0].AxisY.Title = yTitle;
                chart.ChartAreas[0].AxisX.TitleAlignment = align;
                chart.ChartAreas[0].AxisY.TitleAlignment = align;
                chart.ChartAreas[0].AxisX.TitleForeColor = foreColor;
                chart.ChartAreas[0].AxisY.TitleForeColor = foreColor;
                chart.ChartAreas[0].AxisX.LabelStyle = new LabelStyle() { ForeColor = foreColor };
                chart.ChartAreas[0].AxisY.LabelStyle = new LabelStyle() { ForeColor = foreColor };
                chart.ChartAreas[0].AxisX.LineColor = lineColor;
                chart.ChartAreas[0].AxisY.LineColor = lineColor;
                chart.ChartAreas[0].AxisX.ArrowStyle = arrowStyle;
                chart.ChartAreas[0].AxisY.ArrowStyle = arrowStyle;
                chart.ChartAreas[0].AxisX.Interval = xInterval;
                chart.ChartAreas[0].AxisY.Interval = yInterval;
            }
    
            /// <summary>
            /// Name:设置网格
            /// Author:by boxuming 2019-04-23 14:55
            /// </summary>
            /// <param name="chart">图表对象</param>
            /// <param name="lineColor">网格线颜色</param>
            /// <param name="xInterval">X轴网格的间距</param>
            /// <param name="yInterval">Y轴网格的间距</param>
            public static void SetMajorGrid(Chart chart, Color lineColor, double xInterval, double yInterval)
            {
                chart.ChartAreas[0].AxisX.MajorGrid.LineColor = lineColor;
                chart.ChartAreas[0].AxisY.MajorGrid.LineColor = lineColor;
                chart.ChartAreas[0].AxisX.MajorGrid.Interval = xInterval;
                chart.ChartAreas[0].AxisY.MajorGrid.Interval = yInterval;
            }
        }
    

    使用示例

    文章开头展示的图片中的四个统计图表可通过以下代码实现:

    			chart1.Series.Clear();
                ChartHelper.AddSeries(chart1, "柱状图", SeriesChartType.Column, Color.Lime, Color.Red, true);
                ChartHelper.AddSeries(chart1, "曲线图", SeriesChartType.Spline, Color.Red, Color.Red);
                ChartHelper.SetTitle(chart1, "柱状图与曲线图", new Font("微软雅黑", 12), Docking.Bottom, Color.White);
                ChartHelper.SetStyle(chart1, Color.Transparent, Color.White);
                ChartHelper.SetLegend(chart1, Docking.Top, StringAlignment.Center, Color.Transparent, Color.White);
                ChartHelper.SetXY(chart1, "序号", "数值", StringAlignment.Far, Color.White, Color.White, AxisArrowStyle.SharpTriangle, 1, 2);
                ChartHelper.SetMajorGrid(chart1, Color.Gray, 20, 2);
    
                chart2.Series.Clear();
                ChartHelper.AddSeries(chart2, "饼状图", SeriesChartType.Pie, Color.Lime, Color.Red, true);
                ChartHelper.SetStyle(chart2, Color.Transparent, Color.White);
                ChartHelper.SetLegend(chart2, Docking.Top, StringAlignment.Center, Color.Transparent, Color.White);
    
                chart3.Series.Clear();
                ChartHelper.AddSeries(chart3, "曲线图", SeriesChartType.SplineRange, Color.FromArgb(100,46, 199, 201), Color.Red, true);
                ChartHelper.SetTitle(chart3, "曲线图", new Font("微软雅黑", 12), Docking.Bottom, Color.FromArgb(46, 199, 201));
                ChartHelper.SetStyle(chart3, Color.Transparent, Color.White);
                ChartHelper.SetLegend(chart3, Docking.Top, StringAlignment.Center, Color.Transparent, Color.White);
                ChartHelper.SetXY(chart3, "序号", "数值", StringAlignment.Far, Color.White, Color.White, AxisArrowStyle.SharpTriangle, 1, 2);
                ChartHelper.SetMajorGrid(chart3, Color.Gray, 20, 2);
    
                chart4.Series.Clear();
                ChartHelper.AddSeries(chart4, "饼状图", SeriesChartType.Funnel, Color.Lime, Color.Red, true);
                ChartHelper.SetStyle(chart4, Color.Transparent, Color.White);
                ChartHelper.SetLegend(chart4, Docking.Top, StringAlignment.Center, Color.Transparent, Color.White);
                
    			RefreshData();
    

    其中,均是通过调用通用类来进行设置,这样更方便一些。最后的RefreshData()是绑定图表数据的部分,否则没有数据的话图表是无法显示的。绑定数据部分代码如下:

    		public void RefreshData()
            {
                List<int> x1 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
                List<int> y1 = new List<int>();
                Random ra = new Random();
                y1 = new List<int>() {
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10),
                    ra.Next(1, 10)
                };
                RefreshChart(x1, y1, "chart1");
                RefreshChart(x1, y1, "chart2");
                RefreshChart(x1, y1, "chart3");
                RefreshChart(x1, y1, "chart4");
            }
    
            public delegate void RefreshChartDelegate(List<int> x, List<int> y, string type);
            public void RefreshChart(List<int> x, List<int> y, string type)
            {
                if (type == "chart1")
                {
                    if (this.chart1.InvokeRequired)
                    {
                        RefreshChartDelegate stcb = new RefreshChartDelegate(RefreshChart);
                        this.Invoke(stcb, new object[] { x, y, type });
                    }
                    else
                    {
                        chart1.Series[0].Points.DataBindXY(x, y);
                        chart1.Series[1].Points.DataBindXY(x, y);
                    }
                }
                else if (type == "chart2")
                {
                    if (this.chart2.InvokeRequired)
                    {
                        RefreshChartDelegate stcb = new RefreshChartDelegate(RefreshChart);
                        this.Invoke(stcb, new object[] { x, y, type });
                    }
                    else
                    {
                        chart2.Series[0].Points.DataBindXY(x, y);
                        List<Color> colors = new List<Color>() {
                            Color.Red,
                            Color.DarkRed,
                            Color.IndianRed,
                            Color.MediumVioletRed,
                            Color.OrangeRed,
                            Color.PaleVioletRed,
                            Color.Purple,
                            Color.DarkOrange,
                            Color.Maroon,
                            Color.LightCoral,
                            Color.LightPink,
                            Color.Magenta
                        };
                        DataPointCollection points = chart2.Series[0].Points;
                        for (int i = 0; i < points.Count; i++)
                        {
                            points[i].Color = colors[i];
                        }
                    }
                }
                else if (type == "chart3")
                {
                    if (this.chart3.InvokeRequired)
                    {
                        RefreshChartDelegate stcb = new RefreshChartDelegate(RefreshChart);
                        this.Invoke(stcb, new object[] { x, y, type });
                    }
                    else
                    {
                        chart3.Series[0].Points.DataBindXY(x, y);
                    }
                }
                else if (type == "chart4")
                {
                    if (this.chart4.InvokeRequired)
                    {
                        RefreshChartDelegate stcb = new RefreshChartDelegate(RefreshChart);
                        this.Invoke(stcb, new object[] { x, y, type });
                    }
                    else
                    {
                        chart4.Series[0].Points.DataBindXY(x, y);
                        List<Color> colors = new List<Color>() {
                            Color.Red,
                            Color.DarkRed,
                            Color.IndianRed,
                            Color.MediumVioletRed,
                            Color.OrangeRed,
                            Color.PaleVioletRed,
                            Color.Purple,
                            Color.DarkOrange,
                            Color.Maroon,
                            Color.LightCoral,
                            Color.LightPink,
                            Color.Magenta
                        };
                        DataPointCollection points = chart4.Series[0].Points;
                        for (int i = 0; i < points.Count; i++)
                        {
                            points[i].Color = colors[i];
                        }
                    }
                }
            }
    

    为了让图表展现动画效果,添加了一个定时器,用来实时改变数据,这样就可以看到动起来的图表了。定时器代码如下:

    		private void Timer1_Tick(object sender, EventArgs e)
            {
                new Thread(new ThreadStart(RefreshData)).Start();
            }
    

    资料

    以上只是使用chart控件的几个简单示例,而chart控件的功能远远不止这些。为了更方便地了解和使用其他功能,特提供了一些资料,其中包括图表的属性说明文档、各类图表的样式和对应的代码、以及程序示例等,下载地址如下:
    链接:https://pan.baidu.com/s/1mCxiwrEBxeCKkSltXMJPpA
    提取码:9pgr

    展开全文
  • winform chart控件设置

    2018-12-20 13:30:49
    winform chart控件设置 //seriesX.MarkerColor = Color.Green; //设置点的大小 //seriesX.MarkerSize = 5; //seriesX.MarkerStyle = MarkerStyle.Circle; ...
  • Dundas Chart for Winform

    2011-10-21 13:10:08
    Dundas Chart for winformwinform下开发图形显示利器。各式各样的统计图形很容易绘制. Dundas.Chart.for.Windows.Forms.Enterprise.Edition.v7.0.0.1782.for.Visual.Studio.2005.破解版.
  • 当数据库中数据过多时,往往无法在一页中展示,所以非常需要一个滚动条来调节页面内容,那么C#中chart控件如何实现滚动条? 还是以软件【银行业会计技能训练系统】为例,如下图,X轴内容较多,如何实现如下效果的...
  • MS Chart 使用超详细例子
  • 使用vs2019,框架.NETFramework4.7.2,原生Chart控件,原生控件不支持.NETCore。需要使用.NetCore可以使用LiveChart,另有个livechart实时曲线的例子。仅供交流学习。
  • C1Chart控件例子

    热门讨论 2011-03-10 17:09:59
    里面包含C1chart绘制柱形图、饼图、折线图等例子。
  • Live-Charts

    2017-04-24 17:43:52
    免费的chart控件,可以直接运行。
  • 先建一个WinForm项目,然后拖一个Chart控件,如下图: 二.给Chart控件的Series属性添加集合 三.选择图表类型,饼图 四.添加数据点集合,就是饼图要统计的是什么。 比如我添加的是三个数据点,我要统计...
  • WinFormChart控件使用

    2019-11-18 21:42:09
    先建一个WinForm项目,然后拖一个Chart控件,如下图: 二.给Chart控件的Series属性添加集合,因为我这边要做四条折线,所以我就添加了四个,大家根据自身需求添加。 这里面的属性的话,我感觉比较重要就这两个...
  • C# winform chart 饼图 直方图

    热门讨论 2011-12-31 10:21:34
    C# winform chart 饼图 直方图
  • C# winform Chart画图

    2020-07-12 22:54:16
    chart数据设置 图例显示位置 完成效果 先在窗体中拖控件 具体代码 private void initChart(bool f = false) { //清除Series 和 Legends chart1.Series.Clear(); chart1.Legends.Clear(); //绑定数据源 这里是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,758
精华内容 1,103
关键字:

chartwinform