VML柱形立方统计图生成类(C#版)

很久以来一直想封装一个C#版本的VML柱装统计图的东东,但是一直没有时间,现在由于项目需要不得以而草草封装了一个简单的类,希望高手不吝赐教。

//---------------------------------------类代码

using System;

using System.Text;

namespace Dev.Utilities.PubCls

{

/// <summary>

/// 柱形立方统计图 V1.0.0

/// </summary>

/// <remarks>By Gavin Si 2005-5-27 3:01 AM</remarks>

public class HistoGram

{

#region 域

private string[,] _StatData = new string[0,0];

private int _X = 0;

private int _Y = 0;

private int _RectangleThickness = 22;//30;

private int _RectangleWidth = 30;//40;

private int _Width = 450;//600;

private int _Height = 375;//500;

private HistogramType _DiagramType = HistogramType.PortraitSample;

private string[,] _RectangleColor = new string[0,0];

private bool _EnableZoomIn = false;

private string _DiagramTitle = string.Empty;

private int _FontSize = 9;

private bool _EnableSelect = false;

private bool _EnableContextMenu = false;

private string _ParentControlName = string.Empty;

#endregion

#region 属性

#region 统计数据 public string[,] StatData

/// <summary>

/// 统计数据

/// </summary>

public string[,] StatData

{

set

{

for(int i = 0; i < value.GetUpperBound(0) + 1; i ++)

{

if(!General.IsNumeric(value[i,0]))

{

throw new Exception("输入的统计数据不正确!");

}

value[i,0] = Convert.ToString(Math.Round(Double.Parse(value[i,0]),0));

}

this._StatData = value;

}

get

{

return this._StatData;

}

}

#endregion

#region 统计图位置横向坐标 public int X

/// <summary>

/// 统计图位置横向坐标

/// </summary>

/// <remarks>默认为:0</remarks>

public int X

{

set

{

this._X = value;

}

get

{

return this._X;

}

}

#endregion

#region 统计图纵向坐标 public int Y

/// <summary>

/// 统计图纵向坐标

/// </summary>

/// <remarks>默认为:0</remarks>

public int Y

{

set

{

this._Y = value;

}

get

{

return this._Y;

}

}

#endregion

#region 柱形的厚度 public int RectangleThickness

/// <summary>

/// 柱形的厚度

/// </summary>

/// <remarks>默认为:22</remarks>

public int RectangleThickness

{

set

{

this._RectangleThickness = value;

}

get

{

return this._RectangleThickness;

}

}

#endregion

#region 柱形的宽度 public int RectangleWidth

/// <summary>

/// 柱形的宽度

/// </summary>

/// <remarks>默认为:30</remarks>

public int RectangleWidth

{

set

{

this._RectangleWidth = value;

}

get

{

return this._RectangleWidth;

}

}

#endregion

#region 图表的宽 public int Width

/// <summary>

/// 图表的宽

/// </summary>

/// <remarks>默认为:450</remarks>

public int Width

{

set

{

this._Width = value;

}

get

{

return this._Width;

}

}

#endregion

#region 图表的高 public int Height

/// <summary>

/// 图表的高

/// </summary>

/// <remarks>默认为:375</remarks>

public int Height

{

set

{

this.Height = value;

}

get

{

return this._Height;

}

}

#endregion

#region 柱状图的方向 public HistogramType DiagramType

/// <summary>

/// 柱状图的方向

/// </summary>

/// <remarks>默认为横向柱状图</remarks>

public HistogramType DiagramType

{

set

{

this._DiagramType = value;

}

get

{

return this._DiagramType;

}

}

#endregion

#region 允许双击放大 public bool EnableZoomin

/// <summary>

/// 允许双击放大

/// </summary>

/// <remarks>默认为不允许放大</remarks>

public bool EnableZoomin

{

set

{

this._EnableZoomIn = value;

}

get

{

return this._EnableZoomIn;

}

}

#endregion

#region 统计图窗口标题 public string DiagramTitle

/// <summary>

/// 统计图窗口标题

/// </summary>

public string DiagramTitle

{

set

{

this._DiagramTitle = value;

}

get

{

return this._DiagramTitle;

}

}

#endregion

#region 字体大小 public int FontSize

/// <summary>

/// 字体大小

/// </summary>

/// <remarks>默认大小为9pt</remarks>

public int FontSize

{

set

{

this._FontSize = value;

}

get

{

return this._FontSize;

}

}

#endregion

#region 是否允许选择图表 public bool EnableSelect

/// <summary>

/// 是否允许选择图表

/// </summary>

/// <remarks>默认不允许选择</remarks>

public bool EnableSelect

{

set

{

this._EnableSelect = value;

}

get

{

return this._EnableSelect;

}

}

#endregion

#region 是否允许右键菜单 public bool EnableContextMenu

/// <summary>

/// 是否允许右键菜单

/// </summary>

/// <remarks>默认为否</remarks>

public bool EnableContextMenu

{

set

{

this._EnableContextMenu = value;

}

get

{

return this._EnableContextMenu;

}

}

#endregion

#region 上级容器控件ID public string ParentControlName

/// <summary>

/// 上级容器控件ID

/// </summary>

/// <example>

/// 例:

/// 在上级页面里添加如下代码

/// <table>

/// <tr>

/// <td width=10 height=10 id="Stat">

/// <iframe frameBorder=no marginHeight=0 marginWidth=0 src=HistoGram.aspx width=100% height=100%></iframe>

/// </td>

/// </tr>

/// </table>

/// <table>

/// 

/// 在统计图生成页面HistoGram.aspx则要设置这个属性为:

/// HistoGram a = new HistoGram();

/// string[,] Total = new string[8,2];

/// Total[0,0] = "105.888";

/// Total[0,1] = "A类";

/// Total[1,0] = "170";

/// Total[1,1] = "B类";

/// Total[2,0] = "300";

/// Total[2,1] = "C类";

/// Total[3,0] = "310";

/// Total[3,1] = "D类";

/// Total[4,0] = "500.88";

/// Total[4,1] = "E类";

/// Total[5,0] = "130";

/// Total[5,1] = "F类";

/// Total[6,0] = "200";

/// Total[6,1] = "G类";

/// Total[7,0] = "270";

/// Total[7,1] = "H类";

/// a.StatData = Total;

/// a.ParentControlName = "Stat"

/// a.DiagramType = HistoGram.HistogramType.LandscapeSample;

/// StringBuilder B = a.FlushDiagram();

/// Response.Write(B.ToString());

/// Response.End();

/// 这样做可以允许上级页面添加相应的说明文字,并使统计图的输出页面不出现滚动条

/// </example>

public string ParentControlName

{

set

{

this._ParentControlName = value;

}

get

{

return this._ParentControlName;

}

}

#endregion

#endregion

#region 类型定义

#region 柱状图形状 public static enum HistogramType

/// <summary>

/// 柱状图形状

/// </summary>

public enum HistogramType

{

/// <summary>

/// 横向图

/// </summary>

LandscapeSample,

/// <summary>

/// 纵向图

/// </summary>

PortraitSample

}

#endregion

#endregion

#region 方法

#region 画图 public virtual StringBuilder CreateDiagramByVml()

/// <summary>

/// 画图

/// </summary>

/// <returns>返回图形代码</returns>

public virtual StringBuilder CreateDiagramByVml()

{

StringBuilder Rv = new StringBuilder();

if(this._StatData.GetUpperBound(0) > 0)

{

string line_color = "#69f";

int left_width = 50;

int length = this._RectangleThickness / 2;

int total_no = this._StatData.GetUpperBound(0) + 1;

int temp1 = 0;

for(int i = 0; i < total_no; i ++)

{

if(temp1 < Double.Parse(this._StatData[i,0]))

{

temp1 = Int32.Parse(this._StatData[i,0]);

}

}



string temp2 = string.Empty;

string temp3 = string.Empty;

if(temp1 > 9)

{

temp2 = temp1.ToString().Substring(1,1);

if(Double.Parse(temp2) > 4)

{

temp3 = Convert.ToInt32(((int)(temp1/(Math.Pow(10,(temp1.ToString().Length-1)))+1) * Math.Pow(10,(temp1.ToString().Length-1)))).ToString();

}

else

{

temp3 = Convert.ToInt32(((temp1/Math.Pow(10,(temp1.ToString().Length-1))) + 0.5) * Math.Pow(10,(temp1.ToString().Length-1))).ToString();

}

}

else

{

Rv.Append("sdkfjksdjkfj:" + temp1);

if(temp1 > 4)

{

temp3 = "10";

}

else

{

temp3 = "5";

}

}

if(this._EnableZoomIn)

{

Rv.Append("<script language=javascript>/r/n");

Rv.Append("var tmp=1;/r/n");

Rv.Append("function Zoom()/r/n");

Rv.Append("{/r/n");

Rv.Append(" tmp++;/r/n");

Rv.Append(" if(tmp % 2 == 0) h=2; else h=1;/r/n");

Rv.Append(" group1.coordsize=" + this._Width + "/h+/",/"+" + this._Height + "/h;/r/n");

Rv.Append("}/r/n");

Rv.Append("</script>/r/n");

}

string temp4 = temp3;

if(this._EnableZoomIn)

{

Rv.Append("<v:group title=/"双击鼠标可放大两倍/" onDblclick=/"javascript:Zoom();/" ID=/"group1/" style=/"position:relative;WIDTH:"+ this._Width +";HEIGHT:"+ this._Height +";left:"+ this._X +";top:"+ this._Y +";/" coordsize = /""+ this._Width +","+ this._Height +"/">/r/n");

}

else

{

Rv.Append("<v:group ID=/"group1/" style=/"position:relative;WIDTH:"+ this._Width +";HEIGHT:"+ this._Height +";left:"+ this._X +";top:"+ this._Y +";/" coordsize = /""+ this._Width +","+ this._Height +"/">/r/n");

}

Rv.Append("<!--[if gte vml 1]><v:rect id='_x0000_s1027' alt='' style='position:absolute;left:"+ left_width +";top:0;width:"+ this._Width +";height:"+ this._Height +";z-index:-1' fillcolor='#9cf' stroked='f'><v:fill rotate='t' angle='-45' focus='100%' type='gradient'/></v:rect><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+left_width+","+this._Height+"' to='"+ Convert.ToString(this._Width+left_width) +","+this._Height+"'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+left_width+",0' to='"+left_width+","+this._Height+"'/><![endif]-->/r/n");

string table_space;

switch(this._DiagramType)

{

case HistoGram.HistogramType.LandscapeSample:

table_space = Convert.ToString((_Width - _RectangleWidth * total_no) / total_no);

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+ Convert.ToInt32(left_width + length) + ",0' to='"+ Convert.ToUInt32(left_width + length) +","+ Convert.ToInt32(this._Height - length) + "' strokecolor='"+ line_color +"'/><![endif]-->/r/n");

for(int i = 0; i < (this._Height - 1); i = i+this._Height/5)

{

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+ left_width +","+ Convert.ToString(this._Height-length-i) +"' to='"+ Convert.ToString(left_width+length) +","+ Convert.ToString(this._Height-i) +"' strokecolor='"+line_color+"'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+ Convert.ToString(left_width+length) + ","+ Convert.ToString(this._Height-length-i) +"' to='"+ Convert.ToString(this._Width+left_width) +","+ Convert.ToString(this._Height-length-i) +"' strokecolor='"+line_color+"'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+(left_width-15)+","+i+"' to='"+left_width+","+i+"'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:0;top:"+i+";width:"+left_width+";height:18;z-index:1'>/r/n");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'>"+temp4+"</td></tr></table></v:textbox></v:shape><![endif]-->/r/n");

temp4 = Convert.ToInt32(Double.Parse(temp4) - Double.Parse(temp3) /5).ToString();

}

for(int i = 0; i < total_no; i ++)

{

string temp_space = Convert.ToInt32(this._X + left_width + Convert.ToInt32(table_space) / 2 + Convert.ToInt32(table_space) * i + this._RectangleWidth * i).ToString();

Rv.Append("<v:rect id='_x0000_s1025' οnmοuseοver=/"this.fillcolor='"+ _RectangleColor[i,0] +"';/" οnmοuseοut=/"this.fillcolor='"+ _RectangleColor[i,1] +"';/" title='"+ this._StatData[i,1] + "数据:" + this._StatData[i,0] +"' style='position:absolute;left:/r/n");

Rv.Append(temp_space);

Rv.Append(";top:");

Rv.Append(this._Height*(1-(Double.Parse(this._StatData[i,0])/Double.Parse(temp3))));

Rv.Append(";width:"+this._RectangleWidth+";height:"+this._Height*(Double.Parse(this._StatData[i,0])/Double.Parse(temp3))+";z-index:1' fillcolor='"+_RectangleColor[i,1]+"'>/r/n");

Rv.Append("<v:fill color2='"+_RectangleColor[i,0]+"' rotate='t' type='gradient'/>/r/n");

Rv.Append("<o:extrusion v:ext='view' backdepth='"+this._RectangleThickness+"' color='"+_RectangleColor[i,1]+"' on='t'/>/r/n");

Rv.Append("<v:Extrusion on=/"t/" foredepth=/"0/" backdepth=/""+ this._RectangleThickness +"/" color=/""+ _RectangleColor[i,1] +"/" rotationangle=/"0,0/"></v:Extrusion>/r/n");

Rv.Append("</v:rect>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:"+temp_space+";top:" + Convert.ToString(this._Height*(1-(Double.Parse(this._StatData[i,0])/Double.Parse(temp3)))-this._RectangleWidth-5)+";width:"+(Int32.Parse(table_space)+15)+";height:18;z-index:1'>/r/n");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='left'>"+this._StatData[i,0]+"</td></tr></table></v:textbox></v:shape>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:"+ Convert.ToString(Double.Parse(temp_space)-Double.Parse(table_space)/2) +";top:"+ Convert.ToString(this._Height+1) +";width:"+ Convert.ToString(Int32.Parse(table_space) + this._RectangleWidth) +";height:18;z-index:1'>/r/n");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'>"+this._StatData[i,1]+"</td></tr></table></v:textbox></v:shape>/r/n");

}

break;

case HistoGram.HistogramType.PortraitSample:

table_space = Convert.ToString((_Height-_RectangleWidth * total_no)/total_no);

temp4 = Convert.ToString(Double.Parse(temp3)/5);

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"+ Convert.ToString(left_width + length) +","+ Convert.ToString(_Height-length) +"' to='"+ Convert.ToString(left_width+_Width) +","+ Convert.ToString(_Height-length) +"' strokecolor='"+ line_color +"'/><![endif]-->/r/n");

for(int i = 0; i <= _Width-1; i = i + _Width/5)

{

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='" + Convert.ToString(left_width+i) + ","+Convert.ToString(_Height-length) +"' to='"+ Convert.ToString(left_width + length+i) +","+ _Height +"' strokecolor='"+ line_color +"'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='" + Convert.ToString(left_width+length+i) + "," + Convert.ToString(_Height-length) + "' to='" + Convert.ToString(left_width+length+i) + ",0' strokecolor='" + line_color + "'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]><v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='" + Convert.ToString(left_width+i+_Width/5) + "," + _Height + "' to='" + Convert.ToString(left_width+i+_Width/5) + "," + Convert.ToString(_Height+15) + "'/><![endif]-->/r/n");

Rv.Append("<!--[if gte vml 1]>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:" + Convert.ToString(left_width+i+_Width/5-left_width) + ";top:" + _Height + ";width:" + Convert.ToString(left_width) + ";height:18;z-index:1'>/r/n");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'>" + temp4 + "</td></tr></table></v:textbox></v:shape><![endif]-->/r/n");

temp4 = Convert.ToString(Double.Parse(temp4) + Double.Parse(temp3)/5);

}

for(int i = 0; i < total_no; i++)

{

string temp_space = Convert.ToString(Double.Parse(table_space)/2+Double.Parse(table_space)*i+_RectangleWidth*i);

Rv.Append("<v:rect id='_x0000_s1025' title='" + _StatData[i,1] + "数据:" + _StatData[i,0] + "' οnmοuseοver=/"this.fillcolor='"+ _RectangleColor[i,0] +"';/" οnmοuseοut=/"this.fillcolor='"+ _RectangleColor[i,1] +"';/" style='position:absolute;left:");

Rv.Append(left_width);

Rv.Append(";top:");

Rv.Append(temp_space);

Rv.Append(";width:"+ Convert.ToString(_Width*(Double.Parse(_StatData[i,0])/Double.Parse(temp3))) +";height:"+ _RectangleWidth +";z-index:1' fillcolor='"+_RectangleColor[i,1]+"'>/r/n");

Rv.Append("<v:fill color2='"+ _RectangleColor[i,0] +"' rotate='t' angle='-90' focus='100%' type='gradient'/>/r/n");

Rv.Append("<v:Extrusion on=/"t/" foredepth=/"0/" backdepth=/""+ _RectangleThickness +"/" color=/""+ _RectangleColor[i,1] +"/" rotationangle=/"0,0/"></v:Extrusion>/r/n");

Rv.Append("</v:rect>/r/n");

Rv.Append("</v:rect>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:" + Convert.ToString(left_width+_Width*(Double.Parse(_StatData[i,0])/Double.Parse(temp3))+_RectangleThickness/2+5) +";top:"+ temp_space +";width:"+ Convert.ToString(Int32.Parse(table_space)+15) +";height:18;z-index:1'>/r/n");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='center'>"+ _StatData[i,0] +"</td></tr></table></v:textbox></v:shape>/r/n");

Rv.Append("<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:0;top:"+ temp_space +";width:"+ left_width +";height:18;z-index:1'>");

Rv.Append("<v:textbox inset='0,0,0,0'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'>"+ _StatData[i,1] +"</td></tr></table></v:textbox></v:shape>/r/n");

}

break;

}

Rv.Append("</v:group>/r/n");

}

else

{

Rv.Append("<font disabled>没有统计数据!</font>");

}

return Rv;

}

#endregion

#region 输出完整图形 public virtual StringBuilder FlushDiagram()

public virtual StringBuilder FlushDiagram() 

{

StringBuilder Rv = new StringBuilder();



Rv.Append("<html xmlns:v=/"urn:schemas-microsoft-com:vml/">/r/n");

Rv.Append("<head>/r/n");

Rv.Append("<title>"+ this._DiagramTitle +"</title>/r/n");

Rv.Append("<STYLE>/r/n");

Rv.Append("v//:* { Behavior: url(#default#VML) }/r/n");

Rv.Append("body{font-size:"+ this._FontSize +"pt}/r/n");

Rv.Append("table{font-size:"+ this._FontSize +"pt}/r/n");

Rv.Append("td{font-size:"+ this._FontSize +"pt}/r/n");

Rv.Append("INPUT {/r/n");

Rv.Append(" background : #E9E9E9;/r/n");

Rv.Append(" border : 1 solid;/r/n");

Rv.Append(" font-size : "+ this._FontSize +"pt;/r/n");

Rv.Append("}/r/n");

Rv.Append("</STYLE>/r/n");

Rv.Append("</head>/r/n");

Rv.Append("<body");

if(!this._EnableSelect)

{

Rv.Append(" onselectstart=/"javascript:return false;/"");

}

if(!this._EnableContextMenu)

{

Rv.Append(" οncοntextmenu=/"self.event.returnValue=false/"");

}

if(this._ParentControlName != string.Empty && this._ParentControlName != null)

{

Rv.Append(" οnlοad=/"javascript:if (parent.document.all('"+ this._ParentControlName +"')) {parent.document.all('"+ this._ParentControlName +"').height=document.body.scrollHeight;parent.document.all('"+ this._ParentControlName +"').width=document.body.scrollWidth};/"");

}

Rv.Append(">/r/n");

Rv.Append(this.CreateDiagramByVml());

Rv.Append("</body>/r/n");

Rv.Append("</html>/r/n");

return Rv;

}

#endregion

#endregion

#region 构造方法

public HistoGram()

{

this._RectangleColor = new string[40,2];

this._RectangleColor[0,0]="#d1ffd1";

this._RectangleColor[1,0]="#ffbbbb";

this._RectangleColor[2,0]="#ffe3bb";

this._RectangleColor[3,0]="#cff4f3";

this._RectangleColor[4,0]="#d9d9e5";

this._RectangleColor[5,0]="#ffc7ab";

this._RectangleColor[6,0]="#ecffb7";

this._RectangleColor[7,0]="#ecffff";

this._RectangleColor[8,0]="#d1ffd1";

this._RectangleColor[9,0]="#ffbbbb";

this._RectangleColor[10,0]="#ffe3bb";

this._RectangleColor[11,0]="#cff4f3";

this._RectangleColor[12,0]="#d9d9e5";

this._RectangleColor[13,0]="#ffc7ab";

this._RectangleColor[14,0]="#ecffb7";

this._RectangleColor[15,0]="#ecffff";

this._RectangleColor[16,0]="#d1ffd1";

this._RectangleColor[17,0]="#ffbbbb";

this._RectangleColor[18,0]="#ffe3bb";

this._RectangleColor[19,0]="#cff4f3";

this._RectangleColor[20,0]="#d9d9e5";

this._RectangleColor[21,0]="#ffc7ab";

this._RectangleColor[22,0]="#ecffb7";

this._RectangleColor[23,0]="#ecffff";

this._RectangleColor[24,0]="#d1ffd1";

this._RectangleColor[25,0]="#ffbbbb";

this._RectangleColor[26,0]="#ffe3bb";

this._RectangleColor[27,0]="#cff4f3";

this._RectangleColor[28,0]="#d9d9e5";

this._RectangleColor[29,0]="#ffc7ab";

this._RectangleColor[30,0]="#ecffb7";

this._RectangleColor[31,0]="#ecffff";

this._RectangleColor[32,0]="#d1ffd1";

this._RectangleColor[33,0]="#ffbbbb";

this._RectangleColor[34,0]="#ffe3bb";

this._RectangleColor[35,0]="#cff4f3";

this._RectangleColor[36,0]="#d9d9e5";

this._RectangleColor[37,0]="#ffc7ab";

this._RectangleColor[38,0]="#ecffb7";

this._RectangleColor[39,0]="#ecffff";

this._RectangleColor[0,1]="#00ff00";

this._RectangleColor[1,1]="#ff0000";

this._RectangleColor[2,1]="#ff9900";

this._RectangleColor[3,1]="#33cccc";

this._RectangleColor[4,1]="#666699";

this._RectangleColor[5,1]="#993300";

this._RectangleColor[6,1]="#99cc00";

this._RectangleColor[7,1]="#99ccff";

this._RectangleColor[8,1]="#00ff00";

this._RectangleColor[9,1]="#ff0000";

this._RectangleColor[10,1]="#ff9900";

this._RectangleColor[11,1]="#33cccc";

this._RectangleColor[12,1]="#666699";

this._RectangleColor[13,1]="#993300";

this._RectangleColor[14,1]="#99cc00";

this._RectangleColor[15,1]="#99ccff";

this._RectangleColor[16,1]="#00ff00";

this._RectangleColor[17,1]="#ff0000";

this._RectangleColor[18,1]="#ff9900";

this._RectangleColor[19,1]="#33cccc";

this._RectangleColor[20,1]="#666699";

this._RectangleColor[21,1]="#993300";

this._RectangleColor[22,1]="#99cc00";

this._RectangleColor[23,1]="#99ccff";

this._RectangleColor[24,1]="#00ff00";

this._RectangleColor[25,1]="#ff0000";

this._RectangleColor[26,1]="#ff9900";

this._RectangleColor[27,1]="#33cccc";

this._RectangleColor[28,1]="#666699";

this._RectangleColor[29,1]="#993300";

this._RectangleColor[30,1]="#99cc00";

this._RectangleColor[31,1]="#99ccff";

this._RectangleColor[32,1]="#00ff00";

this._RectangleColor[33,1]="#ff0000";

this._RectangleColor[34,1]="#ff9900";

this._RectangleColor[35,1]="#33cccc";

this._RectangleColor[36,1]="#666699";

this._RectangleColor[37,1]="#993300";

this._RectangleColor[38,1]="#99cc00";

this._RectangleColor[39,1]="#99ccff";

}

#endregion

}

}

//------------------------------------------------------------- 测试用例

HistoGram a = new HistoGram();

string[,] Total = new string[8,2];

Total[0,0] = "105.888";

Total[0,1] = "A类";

Total[1,0] = "170";

Total[1,1] = "B类";

Total[2,0] = "300";

Total[2,1] = "C类";

Total[3,0] = "310";

Total[3,1] = "D类";

Total[4,0] = "500.88";

Total[4,1] = "E类";

Total[5,0] = "130";

Total[5,1] = "F类";

Total[6,0] = "200";

Total[6,1] = "G类";

Total[7,0] = "270";

Total[7,1] = "H类";

a.StatData = Total;

a.DiagramType = HistoGram.HistogramType.LandscapeSample;

StringBuilder B = a.FlushDiagram();

Response.Write(B.ToString());

Response.End();

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值