将前面的asp+vml动态实现网页曲线图二重新用c#.net包装成了方法,只需要直接传递参数就可以生成曲线了,这样对动态生成曲线很方便,前面已经写成了asp调用方法.这个同样依赖前面文章的4.css和4.js,需要的话请自己浏览查找.
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 quxiantu;
namespace quxiantu
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
//曲线和点的颜色
protected string[] colorArr = new string[11] {"#ff6600","#ff1188","#ff66dd","#ff0033","#ff9900","#ffdd00","#007700","#777700","#dd6600","#dd0000","#44cc00"};
private string title = "曲线图"; //曲线名字
public string Title
{
get {return title;}
set {if (value != title) title = value;}
}
private string xunit = "x单位";
protected System.Web.UI.WebControls.Button Button1;
//x轴单位
public string Xunit
{
get {return xunit;}
set {if (value != xunit) xunit = value;}
}
private string yunit = "y单位"; //y轴单位
public string Yunit
{
get {return yunit;}
set {if (value != yunit) yunit = value;}
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
#region 写javascript语句内容,<script language=javascript></script>已经写好。
public void Echo(string str)
{
HttpContext Context=HttpContext.Current;
Context.Response.Write(str);
}
#endregion
private void qx2(string xzuobiao,string yzuobiao,int xper,int xmin,int yper,int ymin,ArrayList xvalue,string valuetip,ArrayList yvalue)
{
Echo("<HTML xmlns:v=/"urn:schemas-microsoft-com:vml/" xmlns:o=/"urn:schemas-microsoft-com:office:office/">");
string str_table="<table align=/"center/" border=/"0/" cellpadding=/"0/" cellspacing=/"0/" width=/"100%/"><tr><td height=/"20/"><div align=/"center/" id=/"curve/"></div></td></tr></table>";
Echo("<link rev=/"stylesheet/" media=/"all/" href=/"4.css/" type=/"text/css/" rel=/"stylesheet/">/n <script src=/"4.js/" language=/"javascript/"></script>/n");
Echo (str_table);
Echo("/n<script language=javascript>/n<!--/n var vc = new VMLCurve(document.all.curve);");
//x,y坐标
Echo("/n vc.configXValue = new Array("+xzuobiao+")");
Echo("/nvc.configYValue = new Array("+yzuobiao+");");
//x,y坐标间距和最小值
Echo("/nvc.configXPerValue = "+xper+";/nvc.configXMinValue = "+xmin+";/nvc.configYPerValue = "+yper+";/nvc.configYMinValue = "+ymin+";");
//曲线名称等
Echo("/nvc.init(/"vc/",/""+title+"/",/""+xunit+"/",/""+yunit+"/");");
//点提示信息
Echo("/nvar sValueArr = new Array("+valuetip+");");
for(int i=0;i<xvalue.Count;i++)
{
//x坐标值
Echo("/nvar xValueArr"+i+" = new Array("+xvalue[i]+");");
//y轴值
Echo("/nvar yValueArr"+i+" = new Array("+yvalue[i]+");");
Echo("/nvc.setPointsProp(2,1,'"+colorArr[i]+"','"+colorArr[i]+"');/n vc.setPointsValue(xValueArr"+i+",yValueArr"+i+",sValueArr);");
}
Echo("/n//-->/n</script>");
}
private void Button1_Click(object sender, System.EventArgs e)
{
test2();
}
private void test2()
{
string xzuobiao="'一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'";
string yzuobiao="'100','200','300','400','500','600','700','800','900','1000'";
string valuetip="'第1个点','第2个点','第3个点','第4个点','第5个点','第6个点','第7个点','第8个点','第9个点','第10个点','第11个点','第12个点'";
ArrayList xvalue=new ArrayList();
xvalue.Add("1,2,3,4,5,6,7,8,9,10,11,12");
xvalue.Add("1,1.3,2,2.4,3,4,5,5.5,7,8,9,10,11,12");
ArrayList yvalue=new ArrayList();
yvalue.Add("320,280,420,550,600,700,800,720,190,940,590,340");
yvalue.Add("350,280,220,410,480,580,680,780,880,880,180,840,580,380");
qx2(xzuobiao,yzuobiao,1,1,200,200,xvalue,valuetip,yvalue);
}
}
}