
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Plarm_Test
{
/// <summary>
/// chart 的摘要说明。
/// </summary>
public class chart : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
ChartColumn mChart = new ChartColumn();
mChart.AddValue(910,"一月","blue");
mChart.AddValue(400,"二月","orange");
mChart.AddValue(500,"三月","red");
mChart.AddValue(300,"四月","green");
mChart.AddValue(700,"五月","black");
HttpContext.Current.Response.Write(mChart.SaveChart());
HttpContext.Current.Response.Write("<hr size=1><img src='http://10.0.0.6/Plarm_Test/1.jpeg' alt='' Border=0>");
}
class ChartColumn
{
private int cNum,iCount,iSum;
Single maxData;
public int Height,Width;
public string FileName,s;
private Object[,] cContent=new Object[5,30];
public void AddValue(long vnumber,string vtext,string vcolor)
{
if(iCount++>=20)
return;
cContent[1,iCount]=vnumber;
cContent[2,iCount]=vtext;
cContent[3,iCount]=vcolor;
cNum = cNum + Convert.ToInt32(vnumber);
}
public long GetCount()
{
return iCount;
}
public long GetNum()
{
return cNum;
}
public string SaveChart()
{
//初始化对象
if(Height<60)
Height=300;
if(Width<100)
Width=400;
Bitmap b = new Bitmap(Width,Height,PixelFormat.Format16bppRgb555);
Graphics g = Graphics.FromImage(b);
SolidBrush ibrush = new SolidBrush(Color.Blue);
int i,iSize;
Single i1,i2,i3,i4;
g.Clear(Color.AliceBlue);
iSum=0;
for(i=1;i<=iCount;i++)
if (Convert.ToSingle(cContent[1,i]) > maxData)
maxData=Convert.ToSingle(cContent[1,i]);
maxData=Convert.ToSingle(Math.Round(Convert.ToSingle(maxData)*1.15/100)*100);
Drawback(g,0,0);
i1=(Width-80)/5; //定义柱条数
i3=i1/6; //定义柱宽
for(i=1;i<=iCount;i++)
{
i2=Convert.ToInt64(cContent[1,i]) / Convert.ToSingle(maxData) * (Height-80);
i4=Height-64-i2;
iSize=Convert.ToInt32(System.Math.Round(Convert.ToDouble(Convert.ToDouble(cContent[1,i])*360/cNum)));
DrawColumn(g,50+(i-1)*i1+i3,i4,i2,2*i3,cContent[3,i].ToString(),cContent[2,i].ToString());
iSum=iSum+iSize;
s+="
"+cContent[2,i].ToString()+":"+cContent[1,i].ToString();
}
FileName="E:\\xiaozhen\\ASP.NET\\Plarm_Test\\1.jpeg";
b.Save(FileName,ImageFormat.Jpeg);
b.Dispose();
return s;
}
private void Drawback(Graphics g,int x1,int y1)
{
int i;
Single[] dashValues={3,2,3,2};
Pen blackPen1=new Pen(Color.Black,1);
Single h1;
StringFormat Salign=new StringFormat();
Salign.Alignment=StringAlignment.Center;
blackPen1.DashPattern=dashValues;
Pen blackPen2=new Pen(Color.Black,1);
g.DrawRectangle(blackPen1,46,10,Width-60,Height-80);
g.DrawRectangle(blackPen1,40,16,Width-60,Height-80);
g.DrawRectangle(blackPen2,30,Height-64,Width-50,1);
g.DrawRectangle(blackPen2,40,16,1,Height-80);
g.DrawLine(blackPen2,40,16,46,10); //左上
g.DrawLine(blackPen2,40,Height-64,46,Height-70); //左下
g.DrawLine(blackPen2,Width-20,16,Width-14,10); //右上
g.DrawLine(blackPen2,Width-20,Height-64,Width-14,Height-70); //右下
h1=(Height-80) / 20;
for(i=0;i<=20;i++)
{
if(i%5==0)
{
g.DrawString(Convert.ToString(Convert.ToInt32((20-i)*maxData/20)),new Font("Arial",10),Brushes.Black,15,i*h1+9,Salign);
g.DrawLine(blackPen2,30,i*h1+16,40,i*h1+16);
}
else
{
g.DrawLine(blackPen2,35,i*h1+16,40,i*h1+16);
}
}
}
private void DrawColumn(Graphics g,float x1,float y1,float h1,float w1,string c1,string t1)
{
LinearGradientBrush LinGrBrush = new LinearGradientBrush(new Point(10,Convert.ToInt32(y1-100)),new Point(10,Convert.ToInt32(y1+h1+100)),Color.FromArgb(255,255,255,255),Color.FromName(c1));
SolidBrush lbrush1 = new SolidBrush(Color.FromName(c1));
PointF Point1 = new PointF(x1,y1);
PointF Point4 = new PointF(x1+w1,y1);
PointF Point2 = new PointF(x1+6,y1-6);
PointF Point3 = new PointF(x1+6+w1,y1-6);
PointF[] CurvePoints1={Point1,Point2,Point3,Point4};
PointF Point5 = new PointF(x1+w1,y1);
PointF Point6 = new PointF(x1+w1+6,y1-6);
PointF Point7 = new PointF(x1+w1+6,y1+h1-6);
PointF Point8 = new PointF(x1+w1,y1+h1);
PointF[] CurvePoints2 = {Point5,Point6,Point7,Point8};
g.FillPolygon(lbrush1,CurvePoints1);
g.FillPolygon(lbrush1,CurvePoints2);
g.FillRectangle(LinGrBrush,x1,y1,w1,h1);
StringFormat Salign=new StringFormat();
Salign.Alignment = StringAlignment.Center;
g.DrawString(t1,new Font("Arial",10),Brushes.Black,x1+20,y1+h1+10,Salign);
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
我一直认为 public long GetCount()
{
return iCount;
}
public long GetNum()
{
return cNum;
}
没有用。还有iSum变量也没用
浙公网安备 33010602011771号