// c# 显示柱状图

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;
using System.Drawing;
/// <summary>
/// DrawingCurve 的摘要说明
/// </summary>
public class DrawingCurve
{ public int intXLong = ; //图片大小 长
public int intYLong = ; //图片大小 高
public int intXMultiple = ; //零刻度的值 X
public int intYMultiple = ; //零刻度的值 Y
public int intXMax = ; //最大刻度(点数) X
public int intYMax = ; //最大刻度(点数) Y public int intLeft = ; //左边距
public int intRight = ; //右边距
public int intTop = ; //上边距
public int intEnd = ; //下边距 public string strXText = "时间(单位:月)"; //单位 X
public string strYText = "数量(单位:个)"; //单位 Y
public string strTitle = "趋势线图"; //标题
public DataTable tbData; //要统计的数据 private int intXScale = ; //一刻度长度 X
private int intYScale = ; //一刻度高度 Y
//private int intX = 0; //0点 X坐标
//private int intY = 0; //0点 Y坐标
public int intData = ; //记录数 public DrawingCurve()
{ intXScale = (intXLong - intLeft - intRight) / (intXMax + );//一刻度长度 X
intYScale = (intYLong - intTop - intEnd) / (intYMax + );//一刻度高度 Y //intX = intXLong - intLeft; //0点 X坐标
//intY = intYLong - intEnd; //0点 Y坐标
} public Bitmap DrawingImg()
{ Bitmap img = new Bitmap(intXLong, intYLong); //图片大小
Graphics g = Graphics.FromImage(img);
g.Clear(Color.Snow);
g.DrawString(strTitle, new Font("宋体", ), Brushes.Black, new Point(, ));
g.DrawLine(new Pen(Color.Black, ), intLeft, intYLong - intEnd, intXLong - intRight, intYLong - intEnd); //绘制横向
g.DrawLine(new Pen(Color.Black, ), intLeft, intTop, intLeft, intYLong - intEnd); //绘制纵向 //绘制纵坐标
g.DrawString(strYText, new Font("宋体", ), Brushes.Black, new Point(intLeft, intTop));//Y 单位
Point p1 = new Point(intLeft - , intYLong - intEnd);
for (int j = ; j <= intYMax; j++)
{
p1.Y = intYLong - intEnd - j * intYScale;
Point pt = new Point(p1.X + , p1.Y);
//绘制纵坐标的刻度和直线
g.DrawLine(Pens.Black, pt, new Point(p1.X + , p1.Y));
//绘制纵坐标的文字说明
g.DrawString(Convert.ToString(j + intYMultiple), new Font("宋体", ), Brushes.Black, new Point(p1.X - , p1.Y - ));
} //绘制横坐标
g.DrawString(strXText, new Font("宋体", ), Brushes.Black, new Point(intXLong - intRight, intYLong - intEnd));//X 单位
Point p = new Point(intLeft, intYLong - intEnd);
for (int i = ; i < intXMax; i++)
{
p.X = intLeft + i * intXScale;
//绘制横坐标刻度和直线
g.DrawLine(Pens.Black, p, new Point(p.X, p.Y - ));
//绘制横坐标的文字说明
g.DrawString(Convert.ToString(i + intXMultiple), new Font("宋体", ), Brushes.Black, p);
} intData = tbData.Rows.Count;
if (intData > )
{
//趋势线图
for (int i = ; i < intData - ; i++)
{
DataRow Row1 = tbData.Rows[i];
DataRow Row2 = tbData.Rows[i + ];
//定义起点
Point rec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row1[].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row1[].ToString()) - intYMultiple) * intYScale));
//定义终点
Point dec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row2[].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row2[].ToString()) - intYMultiple) * intYScale));
//绘制趋势折线
g.DrawLine(new Pen(Color.Red), rec, dec);
}
} return img;
} //转换数字
private double TurnNumber(string str)
{
double dubReturn;
try
{
dubReturn = Convert.ToDouble(str);
}
catch
{
dubReturn = ;
}
return dubReturn; } } ----------------------------------调用------------------------------------------------ protected void Page_Load(object sender, EventArgs e)
{
DataTable MyTable = new DataTable(); string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/db.mdb");
string cmdstr = "SELECT 月份,销量 FROM Result";
OleDbConnection con = new OleDbConnection(constr);
con.Open();
//OleDbCommand cmd = new OleDbCommand(cmdstr, con);
OleDbDataAdapter da = new OleDbDataAdapter(cmdstr, con);
da.Fill(MyTable); DrawingCurve MyDc = new DrawingCurve();
MyDc.tbData = MyTable; Bitmap img = new Bitmap(, );
img = MyDc.DrawingImg();
Graphics g = Graphics.FromImage(MyDc.DrawingImg()); //显示图形
img.Save(Response.OutputStream, ImageFormat.Jpeg);;
g.Dispose();
Response.Write("<br>" + MyDc.intData.ToString());
}

c# 柱状图(转载)的更多相关文章

  1. C# 绘制统计图(柱状图, 折线图, 扇形图)【转载】

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

  2. PHP实现动态生成饼状图、柱状图和折线图(转载)

    PHP在图像操作方面的表现非常出色,我们只需借助可以免费得到的GD库便可以轻松实现图.表勾画.下面将分别介绍PHP实现的饼状图.折线图和柱状图以 及他们的使用方法,这几段代码的特点就是不需要再把它们复 ...

  3. 转载:SqlServer数据库性能优化详解

    本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小 ...

  4. 《Web全栈工程师的自我修养》读书笔记(转载)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/5 ...

  5. iOS简易柱状图(带动画)--新手入门篇

    叨逼叨 好久没更新博客了,才几个月,发生了好多事情,处理了好多事情.不变的是写代码依然在继续. 做点啥子 看看objective-c的书,学着写了个柱状图,只是练习的demo而已,iOS上的图表控件已 ...

  6. swift app中展示折线图, 饼状图, 柱状图等数据图表

    github 下载Charts-master SDK,该SDK有多种可自定义的图表样式 lineChart 正弦余弦线图 LineChart (cubic lines) LineChart (grad ...

  7. (转载)MatLab绘图

    转载自:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 转载自:http://www.cnblogs.com/jeromebl ...

  8. FusionChart 导出图片 功能实现(转载)

    FusionChart 导出图片 功能实现(转载) http://www.cnblogs.com/jiagoushi/archive/2013/02/05/2893468.html 题目:精美Fusi ...

  9. highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度

    highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度 作者:highcharts | 时间:2014-6-11 14:07:05 | [小  大] | ...

随机推荐

  1. 网易云课堂_程序设计入门-C语言_第一周:简单的计算程序_1逆序的三位数

    1 逆序的三位数(5分) 题目内容: 程序每次读入一个正三位数,然后输出逆序的数字.注意,当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3 ...

  2. MySQL- InnoDB锁机制

    InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...

  3. IEnumerable和IEnumerator 详解 【转】

    初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下 ...

  4. poj2503

    有关字符串的hash,用黑书上推荐的传说中的ELFhash函数 输入的话,用sscanf处理比較简洁 #include<iostream> #include<cstring> ...

  5. 关于MySQL的Myisam和Innodb的一些比较总结

    总结一下MySQL的Myisam和Innodb引擎的一些差别,权当复习了. 首先二者在文件构成上: Myisam会存储三个文件:.frm 存储表结构,.MYD存储表的数据,.MYI文件存储表的索引:所 ...

  6. zepto打造一款移动端划屏插件

    效果图 样式1 样式2 调用 正常情况下应该是后台生成的html代码,但还是写了一套操作tab页的方法 调用简便如下: <link rel="stylesheet" href ...

  7. 第四章SignalR自托管主机

    第四章SignalR自托管主机 SignalR服务器通常在IIS的Asp.Net应用程序上承载,但它也可以使用自托管库来作为自托管的主机来运行(就像控制台应用程序或Windows服务那样)与Signa ...

  8. ajax 实例

    jsp页面代码: <script type="text/javascript"> var xmlHttp; function createXMLHttp(){ if(w ...

  9. NOIP2012模拟试题 121105【奶牛排队(tahort)

    3.奶牛排队(tahort) [ 问题描述] 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的 ...

  10. HttpServletRequest 各种方法总结(转自百度经验)

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. req ...