C#生成拆线图
来源:互联网 发布:怎么能学好c语言 编辑:程序博客网 时间:2024/05/17 03:37
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
namespace WebApplication1
{
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;
using System.Data.SqlTypes;
/// <summary>
/// DrawingCurve 的摘要说明
/// </summary>
public class DrawingCurve
{
public int intXLong = 800; //图片大小 长
public int intYLong = 600; //图片大小 高
public int intXMultiple = 1; //零刻度的值 X
public int intYMultiple = 0; //零刻度的值 Y
public int intXMax = 12; //最大刻度(点数) X
public int intYMax = 30; //最大刻度(点数) Y
public int intLeft = 50; //左边距
public int intRight = 120; //右边距
public int intTop = 30; //上边距
public int intEnd = 50; //下边距
public string strXText = "时间(单位:月)"; //单位 X
public string strYText = "数量(单位:个)"; //单位 Y
public string strTitle = "趋势线图"; //标题
public DataTable tbData; //要统计的数据
private int intXScale = 30; //一刻度长度 X
private int intYScale = 30; //一刻度高度 Y
//private int intX = 0; //0点 X坐标
//private int intY = 0; //0点 Y坐标
public int intData = 0; //记录数
public DrawingCurve()
{
intXScale = (intXLong - intLeft - intRight) / (intXMax + 1);//一刻度长度 X
intYScale = (intYLong - intTop - intEnd) / (intYMax + 1);//一刻度高度 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("宋体", 14), Brushes.Black, new Point(5, 5));
g.DrawLine(new Pen(Color.Black, 2), intLeft, intYLong - intEnd, intXLong - intRight, intYLong - intEnd); //绘制横向
g.DrawLine(new Pen(Color.Black, 2), intLeft, intTop, intLeft, intYLong - intEnd); //绘制纵向
//绘制纵坐标
g.DrawString(strYText, new Font("宋体", 12), Brushes.Black, new Point(intLeft, intTop));//Y 单位
Point p1 = new Point(intLeft - 10, intYLong - intEnd);
for (int j = 0; j <= intYMax; j++)
{
p1.Y = intYLong - intEnd - j * intYScale;
Point pt = new Point(p1.X + 10, p1.Y);
//绘制纵坐标的刻度和直线
g.DrawLine(Pens.Black, pt, new Point(p1.X + 15, p1.Y));
//绘制纵坐标的文字说明
g.DrawString(Convert.ToString(j + intYMultiple), new Font("宋体", 12), Brushes.Black, new Point(p1.X - 25, p1.Y - 8));
}
//绘制横坐标
g.DrawString(strXText, new Font("宋体", 12), Brushes.Black, new Point(intXLong - intRight, intYLong - intEnd));//X 单位
Point p = new Point(intLeft, intYLong - intEnd);
for (int i = 0; i < intXMax; i++)
{
p.X = intLeft + i * intXScale;
//绘制横坐标刻度和直线
g.DrawLine(Pens.Black, p, new Point(p.X, p.Y - 5));
//绘制横坐标的文字说明
g.DrawString(Convert.ToString(i + intXMultiple), new Font("宋体", 12), Brushes.Black, p);
}
intData = tbData.Rows.Count;
if (intData > 0)
{
//趋势线图
for (int i = 0; i < intData - 1; i++)
{
DataRow Row1 = tbData.Rows[i];
DataRow Row2 = tbData.Rows[i + 1];
//定义起点
Point rec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row1[0].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row1[1].ToString()) - intYMultiple) * intYScale));
//定义终点
Point dec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row2[0].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row2[1].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 = 0;
}
return dubReturn;
}
}
//----------------------------------调用------------------------------------------------
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//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);
//sql数据库
//try
//{
// SqlConnection conn = new SqlConnection("server=.;database=demo;uid=sa;pwd=;");
// string sqlstr = "select month ,xiaoliang from t_result ";
// conn.Open();
// DataSet ds = new DataSet();
// SqlCommand cmd = new SqlCommand();
// cmd.CommandText = sqlstr;
// SqlDataAdapter sqlda = new SqlDataAdapter(sqlstr, conn);
// sqlda.Fill(ds);
// if (ds != null && ds.Tables.Count > 0)
// {
// MyTable = ds.Tables[0];
// }
//}
//catch (Exception ex)
//{
// Response.Write(ex.Message);
// throw;
//}
DataTable MyTable = new DataTable();
MyTable.Columns.Add("month", typeof(SqlInt32));
MyTable.Columns.Add("xiaoliang", typeof(SqlInt32));
DataRow dr1=MyTable.NewRow();
dr1["month"] = 1;
dr1["xiaoliang"] = 2;
MyTable.Rows.Add(dr1);
DataRow dr2 = MyTable.NewRow();
dr2["month"] = 2;
dr2["xiaoliang"] = 1;
MyTable.Rows.Add(dr2);
DataRow dr3 = MyTable.NewRow();
dr3["month"] = 3;
dr3["xiaoliang"] = 4;
MyTable.Rows.Add(dr3);
DataRow dr4 = MyTable.NewRow();
dr4["month"] = 4;
dr4["xiaoliang"] = 10;
MyTable.Rows.Add(dr4);
DataRow dr5= MyTable.NewRow();
dr5["month"] = 5;
dr5["xiaoliang"] = 15;
MyTable.Rows.Add(dr5);
DataRow dr6 = MyTable.NewRow();
dr6["month"] = 6;
dr6["xiaoliang"] = 10;
MyTable.Rows.Add(dr6);
DrawingCurve MyDc = new DrawingCurve();
MyDc.tbData = MyTable;
Bitmap img = new Bitmap(100, 100);
img = MyDc.DrawingImg();
Graphics g = Graphics.FromImage(MyDc.DrawingImg());
//显示图形
img.Save(Response.OutputStream, ImageFormat.Jpeg);;
g.Dispose();
Response.Write("<br>" + MyDc.intData.ToString());
}
}
}
- C#生成拆线图
- ExtJs 绘制拆线图
- Highcharts拆线图
- highcharts绘制拆线图
- EXT chartpanel 饼状图 拆线图
- fusionCharts——拆线图
- Android笔记:自定义view拆线图
- 理解FXO拆线故障
- 03 - 拆线图表
- C# GDI生成饼图
- C#如何生成图种
- C# 生成8位灰度图bmp
- HDU 2050 拆线分割平面(递推)
- C#生成PDF文档
- c#生成pdf文件
- C#生成验证码
- C#生成验证码
- C#生成PDF文档
- 一般存到自己的硬盘上比较安全
- webseald的trace,日志开启与关闭
- chm 文件 打开有目录无内容的解决方法
- 文件描述符和文件指针区别
- 窗口刷新问题
- C#生成拆线图
- 判断三个顶点能否构成三角形
- 三角形按钮
- 什么时候喝酸奶最好
- visual vm
- 图片按钮
- 两台Linux机器实现文件交换
- 文件输入部分数据流——识别文件格式
- 输入