c# winform 制作统计图

c# winform 制作统计图(饼图、条形图、折线图) 

       本人用C#作winform统计图用的是VS自带的控件Chart,控件是动态添加到TableLayoutPanel容器中的。多的不说,直接上图及源代码:

c winform 制作统计图(饼图、条形图、折线图)——2012年08月25日 - m15011159461 - 东仔

(此处就不上传折线图及条形图了,下拉框选择显示的方式)

下面是源代码:

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/

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值