C#+统计图-柱形图+饼形图+折线图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实例:C# 绘制统计图(柱状图, 折线图, 扇形

图)

2008-9-24 19:30:32 已被阅读:【字号:大中小】

统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的;这里我们用就C# 制作三款最经典的统计图: 柱状图, 折线图和扇形图;既

然是统计, 当然需要数据, 这里演示的数据存于Sql Server2000中, 三款统计图形都是动态生成. 其中柱状图我会附上制作步骤, 其他两款统计图直接附源码.

说明: 需求不一样, 统计图形绘制后的显示效果也不一样, 比如这里柱状图的主要需

求是为了比较每一期报名人数与通过人数的差, 因此会把两根柱子放在一起会使比较结果

一目了然. 因此大家可以根据需要灵活绘制.

一. 柱状图的绘制.

绘制步骤如下:

1. 定义绘图用到的类.

定义绘图类

int height = 500, width = 700;

Bitmap image = new Bitmap(width, height);

Graphics g = Graphics.FromImage(image);

Pen mypen = new Pen(brush, 1);

2. 绘制图框.

绘制图框

g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);

3. 绘制横向坐标线

绘制横向坐标线

for (int i = 0; i < 14; i++)

{

g.DrawLine(mypen, x, 80, x, 340);

x = x + 40;

}

4. 绘制纵向坐标线

绘制纵向坐标线

for (int i = 0; i < 9; i++)

{

g.DrawLine(mypen, 60, y, 620, y);

y = y + 26;

}

5. 绘制横坐标值

绘制横坐标值

String[] n = { "第一期", "第二期", "第三期", "第四期", "全年" }; for (int i = 0; i < 7; i++)

{

g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 348);

x = x + 78;

}

6. 绘制纵坐标值

绘制纵坐标

String[] m = {"250","225", "200", "175", "150", "125", "100“}; for (int i = 0; i < 10; i++)

{

g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y);

y = y + 26;

}

7. 定义数组存储数据库中统计的数据

定义存储统计数据的数组

int[] Count1 = new int[7]; //存储从数据库读取的报名人数

int[] Count2 = new int[7]; //存储从数据库读取的通过人数

8. 从数据库中读取报名人数与通过人数

读取数据

SqlConnection Con = new SqlConnection(

"Server=(Local);Database=committeeTraining;");

Con.Open();

string cmdtxt2 = "SELECT * FROM ##Count

where Company='" + ****+ "'";

SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);

DataSet ds = new DataSet();

da.Fill(ds);

9. 将读取的数据存储到数组中

将数据存储到数组中

Count1[0] = Convert.ToInt32(ds.Tables[0].Rows[0][“count1”].ToString()); Count1[1] = Convert.ToInt32(ds.Tables[0].Rows[0][“count3”].ToStrin g()); Count2[0] = Convert.ToInt32(ds.Tables[0].Rows[0][“count2”].ToString()); Count2[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count4"].ToString());

10.定义画笔和画刷准备绘图

准备绘制柱状图

x = 80;

Font font2 = new System.Drawing.Font(

"Arial", 10, FontStyle.Bold);

SolidBrush mybrush = new SolidBrush(Color.Red);

SolidBrush mybrush2 = new SolidBrush(Color.Green);

11. 根据数组中的值绘制柱状图

绘制柱状图

(1)第一期报名人数

g.FillRectangle(mybrush, x, 340 - Count1[0], 20, Count1[0]);

g.DrawString(Count1[0].ToString(), font2,

Brushes.Red, x, 340 - Count1[0] - 15);

(2) 第一期通过人数

x = x + 20;

g.FillRectangle(mybrush2, x, 340 - Count2[0], 20, Count2[0]);

相关文档
最新文档