C#学习 - 使用 MS Chart 绘制饼图和圆环图

这几天我决定花一些时间,逐个研究下.NET中的Chart控件。web

个人IDE版本为VS2012,.NET框架版本为.NET 4.5框架

运行本文代码须要用到命名空间System.Windows.Forms.DataVisualization.Chartingide


一、饼图(SeriesChartType.Pie)函数

现有一个Chart控件,取名为chart,在程序Load函数中输入以下代码:ui

private void FormMain_Load(object sender, EventArgs e)
{
    //清空chart图表
    chart.ChartAreas.Clear(); //图表区
    chart.Titles.Clear(); //图表标题
    chart.Series.Clear(); //图表序列
    chart.Legends.Clear(); //图表图例

    //新建chart图表要素
    chart.ChartAreas.Add(new ChartArea("chartArea"));
    chart.ChartAreas["chartArea"].AxisX.IsMarginVisible = false;
    chart.ChartAreas["chartArea"].Area3DStyle.Enable3D = false;
    chart.Titles.Add("某行业各公司市场占有率调查报告"); //标题
    chart.Titles[0].Font = new Font("宋体", 20);
    chart.Series.Add("data");
    chart.Series["data"].ChartType = SeriesChartType.Pie; //图标类型
    chart.Series["data"]["PieLabelStyle"] = "Outside";
    chart.Series["data"]["PieLineColor"] = "Black";
    chart.Legends.Add(new Legend("legend"));
    chart.Palette = ChartColorPalette.BrightPastel;

    //为chart图表赋值
    //点1
    int idxA = chart.Series["data"].Points.AddY(20);
    DataPoint pointA = chart.Series["data"].Points[idxA];
    pointA.Label = "甲公司";
    pointA.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点2
    int idxB = chart.Series["data"].Points.AddY(15);
    DataPoint pointB = chart.Series["data"].Points[idxB];
    pointB.Label = "乙公司";
    pointB.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点3
    int idxC = chart.Series["data"].Points.AddY(30);
    DataPoint pointC = chart.Series["data"].Points[idxC];
    pointC.Label = "丙公司";
    pointC.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点4
    int idxD = chart.Series["data"].Points.AddY(30);
    DataPoint pointD = chart.Series["data"].Points[idxD];
    pointD.Label = "丁公司";
    pointD.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点5
    int idxE = chart.Series["data"].Points.AddY(85);
    DataPoint pointE = chart.Series["data"].Points[idxE];
    pointE.Label = "戊公司";
    pointE.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
}

绘制好的图像,效果以下:code

将ChartArea的属性Area3DStyle.Enable3D改成true,效果以下:orm

二、圆环图(SeriesChartType.Doughnut)get

图表控件的标识符还用chart不变:it

private void FormMain_Load(object sender, EventArgs e)
{
    //清空chart图表
    chart.ChartAreas.Clear(); //图表区
    chart.Titles.Clear(); //图表标题
    chart.Series.Clear(); //图表序列
    chart.Legends.Clear(); //图表图例

    //新建chart图表要素
    chart.ChartAreas.Add(new ChartArea("chartArea"));
    chart.ChartAreas["chartArea"].AxisX.IsMarginVisible = false;
    chart.ChartAreas["chartArea"].Area3DStyle.Enable3D = false;
    chart.Titles.Add("某行业各公司市场占有率调查报告");
    chart.Titles[0].Font = new Font("宋体", 20);
    chart.Series.Add("data");
    chart.Series["data"].ChartType = SeriesChartType.Doughnut; //这一行与上个例子不一样
    chart.Series["data"]["PieLabelStyle"] = "Outside";
    chart.Series["data"]["PieLineColor"] = "Black";
    chart.Legends.Add(new Legend("legend"));
    chart.Palette = ChartColorPalette.BrightPastel;

    //为chart图表赋值
    //点1
    int idxA = chart.Series["data"].Points.AddY(20);
    DataPoint pointA = chart.Series["data"].Points[idxA];
    pointA.Label = "甲公司";
    pointA.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点2
    int idxB = chart.Series["data"].Points.AddY(15);
    DataPoint pointB = chart.Series["data"].Points[idxB];
    pointB.Label = "乙公司";
    pointB.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点3
    int idxC = chart.Series["data"].Points.AddY(30);
    DataPoint pointC = chart.Series["data"].Points[idxC];
    pointC.Label = "丙公司";
    pointC.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点4
    int idxD = chart.Series["data"].Points.AddY(30);
    DataPoint pointD = chart.Series["data"].Points[idxD];
    pointD.Label = "丁公司";
    pointD.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点5
    int idxE = chart.Series["data"].Points.AddY(85);
    DataPoint pointE = chart.Series["data"].Points[idxE];
    pointE.Label = "戊公司";
    pointE.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
}

绘制好的图像,效果以下:io

将ChartArea的属性Area3DStyle.Enable3D改成true,效果以下:

注意:

一、MS Chart支持的绘图种类能够参考:

https://msdn.microsoft.com/library/system.web.ui.datavisualization.charting.seriescharttype.aspx

二、除了IDE中所见即所得的编辑可修改的部分外,Chart还有一些自定义属性,详见页面:

https://msdn.microsoft.com/zh-cn/library/dd456764

END

相关文章
相关标签/搜索