c# winform 制作统计图(饼图、条形图、折线图)
本人用C#作winform统计图用的是VS自带的控件Chart,控件是动态添加到TableLayoutPanel容器中的。多的不说,直接上图及源代码:
![c winform 制作统计图(饼图、条形图、折线图)——2012年08月25日 - m15011159461 - 东仔](http://img1.ph.126.net/XnpAoVY5AdKNsUx-mqmLqg==/21392098247887171.jpg)
(此处就不上传折线图及条形图了,下拉框选择显示的方式)
下面是源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace VoteApp
{
public partial class PollResult :Form
{
VoteDataContext dc = new VoteDataContext();
List<Chart> chart = new List<Chart>();
public PollResult()
{
InitializeComponent();
}
private void PollResult_Load(object sender, EventArgs e)
{
var jobs = dc.Job.Where(c => c.JobVote == true).Select(c => c);
//绘图区
tableLayoutPanel1.ColumnCount = jobs.Count();
int column = 0;
foreach (var job in jobs)
{
Chart chart1 = new Chart();
chart1.BackColor = Color.Transparent;
//数据点的集合
Series series = chart1.Series.Add("Series1");
//图表区
ChartArea area = chart1.ChartAreas.Add("polls");
//图表的标题
chart1.Titles.Add(job.JobName);
//鼠标停留显示
series.ToolTip = "#VAL{D} 票";
//series.LegendToolTip = "#PERCENT";
//启用3D效果显示,此处可以根据需要设置为3D显示方式
//area.Area3DStyle.Enable3D = true;
//设置阴影偏移量为2
//series.ShadowOffset = 2;
series.BackSecondaryColor = Color.DarkCyan;
series.BorderColor = Color.DarkOliveGreen;
series.LabelBackColor = Color.Transparent;
var polls = from c1 in dc.Poll
join c2 in dc.Candidate
on c1.CandidateID equals c2.CandidateID
where c1.JobID == job.JobID
group c2 by c2.CandidateName into c
select new { candidatename = c.Key, count = c.Count() };
series.Points.DataBind(polls, "candidatename", "count", "");
chart.Add(chart1);
tableLayoutPanel1.Controls.Add(chart1, column, 0);
polls = polls.Skip(0).Take(3).OrderByDescending(c => c.count);
int rowindex = 1;
foreach (var poll in polls)
{
Label label = new Label();
label.Text = poll.candidatename + ":" + poll.count + "票";
label.Anchor = AnchorStyles.None;
tableLayoutPanel1.Controls.Add(label, column, rowindex);
rowindex++;
}
column++;
}
toolStripComboBox1.SelectedIndex = 0;
}
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (toolStripComboBox1.SelectedIndex == 0)
{
foreach (Chart chart1 in chart)
{
chart1.Series["Series1"].ChartType = SeriesChartType.Pie;
}
}
else if (toolStripComboBox1.SelectedIndex == 1)
{
foreach (Chart chart1 in chart)
{
chart1.Series["Series1"].ChartType = SeriesChartType.Bar;
}
}
else
{
foreach (Chart chart1 in chart)
{
chart1.Series["Series1"].ChartType = SeriesChartType.Line;
}
}
}
}
}
转载自:http://netdz.blog.163.com/blog/static/2106990252012725104054804/