俺们是个新人,不论是对软件,还是人生,都是满新的。工作一年有半。平时想法很多,但是缺乏实干的毅力。很多事情半途而废。
爱好不在软件,在乎数码,笔记本电脑 数码相机 摄影 数码随身听 手机 呼机 商务通 掌上电脑 IQ IP IC卡,通通没有他们的密码。。。
最近突然想到web上经常要根据数据显示柱状图。
想想应该不难。
主要是了解则么在web上绘图。经过一个2个小时的努力,做出个半途而废的东西。这个东西好好写,再写工整些,写强些。写配置,应该是个不错的东西。
我肯定是半途而废的人嘛。呵呵
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
System.IO;
using
System.Drawing.Imaging;
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
namespace
gdi
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
// 在此处放置用户代码以初始化页面
DataTable _DT = new DataTable("Test");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DataColumn _dc = new DataColumn();
DataColumn myDataColumn;
DataRow myDataRow;
// Create first column and add to the DataTable.
myDataColumn = new DataColumn();
myDataColumn.DataType= System.Type.GetType("System.Int32");
myDataColumn.ColumnName = "Number";
myDataColumn.Caption = "ID";
myDataColumn.ReadOnly = true;
// Add the column to the DataColumnCollection.
_DT.Columns.Add(myDataColumn);
// Create second column.
myDataColumn = new DataColumn();
myDataColumn.DataType= System.Type.GetType("System.String");
myDataColumn.ColumnName = "Item";
myDataColumn.AutoIncrement = false;
myDataColumn.Caption = "Item";
myDataColumn.ReadOnly = false;
myDataColumn.Unique = false;
_DT.Columns.Add(myDataColumn);
// Create three sets of DataRow objects, five rows each, and add to DataTable.
myDataRow = _DT.NewRow();
myDataRow["Number"] = 67;
myDataRow["Item"] = "Item0";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 34;
myDataRow["Item"] = "Item1";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 68;
myDataRow["Item"] = "Item2";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 89;
myDataRow["Item"] = "Item3";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 78;
myDataRow["Item"] = "Item3";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 56;
myDataRow["Item"] = "Item4";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 45;
myDataRow["Item"] = "Item5";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 34;
myDataRow["Item"] = "Item6";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 2;
myDataRow["Item"] = "Item7";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 24;
myDataRow["Item"] = "Item8";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 94;
myDataRow["Item"] = "Item9";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 35;
myDataRow["Item"] = "Item10";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 94;
myDataRow["Item"] = "Item11";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 39;
myDataRow["Item"] = "Item12";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 43;
myDataRow["Item"] = "Item13";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 56;
myDataRow["Item"] = "Item14";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
myDataRow = _DT.NewRow();
myDataRow["Number"] = 89;
myDataRow["Item"] = "Item15";
_DT.Rows.Add(myDataRow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//this.DataGrid1.DataSource = _DT;
//this.DataGrid1.DataBind();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
this.DrawBlockWithDataTable(_DT);
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
this.Load += new System.EventHandler(this.Page_Load);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
#endregion
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
public void DrawBlockWithDataTable(DataTable _DT)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Bitmap newBitmap = null;
Graphics g = null ;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
try
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Font fontCounter = new Font("Lucida Sans Unicode", 12);
//draw the background
newBitmap = new Bitmap(640,480,PixelFormat.Format32bppPArgb);
g = Graphics.FromImage(newBitmap);
//"o" point position
Point _OPoint = new Point();
_OPoint.X=40;
_OPoint.Y=440;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//"x" point position
Point _XPoint = new Point();
_XPoint.X=560;
_XPoint.Y=440;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//"y" point position
Point _YPoint = new Point();
_YPoint.X = 40;
_YPoint.Y = 40;
//create a pen
Pen _Pen = new Pen(Color.White,2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//draw x and y
g.DrawLine(_Pen,_OPoint,_XPoint);
g.DrawLine(_Pen,_OPoint,_YPoint);
//deal with DT
int itemcount = _DT.Rows.Count;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//get the max number
int maxNum = 0;
for (int i = 0 ; i < itemcount ;i++)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
maxNum = maxNum > (int)_DT.Rows[i][0]?maxNum:(int)_DT.Rows[i][0];
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
int currentNum = 0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
int RentHight = 400/maxNum;
int RentBetweenwidth = 20;
Point _CurrentPoint = new Point();
Point _PrePoint = new Point();
_PrePoint.X = 40;
_PrePoint.Y = 440;
for(int i=0;i<itemcount;i++)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
currentNum = (int)_DT.Rows[i]["Number"];
_CurrentPoint.X = (i*10)+40+(i+1)*RentBetweenwidth;
_CurrentPoint.Y = 440-currentNum*RentHight;
g.FillRectangle(new SolidBrush(Color.Green),_CurrentPoint.X,_CurrentPoint.Y,10,currentNum*RentHight);
g.DrawLine(new Pen(Color.Red),_PrePoint,_CurrentPoint);
_PrePoint.X = _CurrentPoint.X;
_PrePoint.Y = _CurrentPoint.Y;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
MemoryStream tempStream = new MemoryStream();
newBitmap.Save(tempStream,ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(tempStream.ToArray());
Response.End();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
catch(Exception ex)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Console.WriteLine(ex.ToString());
}
finally
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (null != g) g.Dispose();
if (null != newBitmap) newBitmap.Dispose();
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
}
}
效果图
作为半途而废的人,只会写到这里了。水平太菜了。
代码风格也不好。
对了,最后再说句,有数码方面研究的找偶。