//---------------------------------------类代码
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();