没有合适的资源?快使用搜索试试~ 我知道了~
首页C# 制作柱形对比图,折线图, 扇形图
资源详情
资源评论
资源推荐

C# 绘制统计图 ( 柱状图 , 折线图 , 扇形图 )
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有 Flash
制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的;
这里我们用就 C# 制作三款最经典的统计图: 柱状图, 折线图和扇形图;既然是统计, 当然需要
数据, 这里演示的数据存于 Sql Server2000 中, 三款统计图形都是动态生成. 其中柱状图我会
附上制作步骤, 其他两款统计图直接附源码.
说明: 需求不一样, 统计图形绘制后的显示效果也不一样, 比如这里柱状图的主要需求是为了比
较每一期报名人数与通过人数的差, 因此会把两根柱子放在一起会使比较结果一目了然. 因此大
家可以根据需要灵活绘制.
最终柱状图的效果图:

柱状图的完整代码:
private void CreateImage()
{
int height = 500, width = 700;
Bitmap image = new Bitmap(width, height);
//创建 Graphics 类对象
Graphics g = Graphics.FromImage(image);
try
{
//清空图片背景色
g.Clear(Color.White);
Font font = new Font("Arial", 10, FontStyle.Regular);
Font font1 = new Font("宋体", 20, FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,
0, image.Width, image.Height),
Color.Blue, Color.BlueViolet, 1.2f, true);
g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);
// Brush brush1 = new SolidBrush(Color.Blue);
g.DrawString(this.ddlTaget.SelectedItem.Text + " " +
this.ddlYear.SelectedItem.Text +
" 成绩统计柱状图", font1, brush, new PointF(70, 30));
//画图片的边框线
g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1,
image.Height - 1);

Pen mypen = new Pen(brush, 1);
//绘制线条
//绘制横向线条
int x = 100;
for (int i = 0; i < 14; i++)
{
g.DrawLine(mypen, x, 80, x, 340);
x = x + 40;
}
Pen mypen1 = new Pen(Color.Blue, 2);
x = 60;
g.DrawLine(mypen1, x, 80, x, 340);
//绘制纵向线条
int y = 106;
for (int i = 0; i < 9; i++)
{
g.DrawLine(mypen, 60, y, 620, y);
y = y + 26;
}
g.DrawLine(mypen1, 60, y, 620, y);
//x 轴
String[] n = { "第一期", "第二期", "第三期", "第四期", "上半年", "下半年",
"全年统计" };
x = 78;
for (int i = 0; i < 7; i++)

{
g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 348); //设置文字
内容及输出位置
x = x + 78;
}
//y 轴
String[] m = {"250","225", "200", "175", "150", "125", "100", " 75",
" 50", " 25", " 0"};
y = 72;
for (int i = 0; i < 10; i++)
{
g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y); //设置文字内
容及输出位置
y = y + 26;
}
int[] Count1 = new int[7];
int[] Count2 = new int[7];
SqlConnection Con = new
SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=*
*");
Con.Open();
string cmdtxt2 = "SELECT * FROM ##Count where Company='" +
this.ddlTaget.SelectedItem.Text.Trim() + "'";
SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);
DataSet ds = new DataSet();
da.Fill(ds);

Count1[0] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count1"].ToString());
Count1[1] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count3"].ToString());
Count1[2] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count5"].ToString());
Count1[3] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count7"].ToString());
Count1[4] = Count1[0] + Count1[1];
Count1[5] = Count1[2] + Count1[3];
Count1[6] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count9"].ToString());
Count2[0] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count2"].ToString());
Count2[1] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count4"].ToString());
Count2[2] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count6"].ToString());
Count2[3] = Convert.ToInt32(ds.Tables[0].Rows[0]
["count8"].ToString());
Count2[4] = Count2[0] + Count2[1];
Count2[5] = Count2[2] + Count2[3];
剩余22页未读,继续阅读








安全验证
文档复制为VIP权益,开通VIP直接复制

评论9