chart.aspx.cs

来自「asp.net专家200问(含源代码解决法案」· CS 代码 · 共 145 行

CS
145
字号
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
namespace aspCharts
{
	/// <summary>
	/// Chart 的摘要说明。
	/// </summary>
	public class Chart : System.Web.UI.Page
	{
		private void Page_Load(object sender, System.EventArgs e)
		{

			Graphics objGraphics;//建立画板对象
			Bitmap objBitMap = new Bitmap(600,300);//建立位图对象
			objGraphics = Graphics.FromImage(objBitMap);//根据位图对象建立画板对象
			objGraphics.Clear(Color.White);//设置画板对象的背景色
			int[] arrValues={0,0,0,0,0,0};//数据数组
			arrValues[0]=50;
			arrValues[1]=70;
			arrValues[2]=90;
			arrValues[3]=100;
			arrValues[4]=140;
			arrValues[5]=220;
			string[] arrValueNames={"0","0","0","0","0","0"};//月份

			arrValueNames[0] = "一月";
			arrValueNames[1]="二月";
			arrValueNames[2] = "三月";
			arrValueNames[3]="四月";
			arrValueNames[4]="五月";
			arrValueNames[5]="六月";

			objGraphics.DrawString("上半年销售情况统计",new Font("宋体",16),Brushes.Black,new PointF(0,0));

			//创建图例文字
			PointF symbolLeg = new PointF(335,20);
			PointF descLeg = new PointF(360,16);

			//画出图例。利用objGraphics图形对象的三个方法画出图例:
            //FillRectangle()方法画出填充矩形,DrawRectangle()方法画出矩形的边框,
            //DrawString()方法画出说明文字。这三个图形对象的方法在 .NET 框架类库类库中均已重载,
            //可以很方便根据不同的参数来画出图形。

			for(int i=0;i<arrValueNames.Length;i++)//画出各个月的标示图形
			{
				objGraphics.FillRectangle(new SolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);

				objGraphics.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);

				objGraphics.DrawString(arrValueNames[i].ToString(),new Font("宋体",10),Brushes.Black,descLeg);

				symbolLeg.Y += 15;
				descLeg.Y += 15;
			}

			for(int j = 0;j<arrValues.Length;j++)//画矩形图
			{
				objGraphics.FillRectangle(new SolidBrush(GetColor(j)),(j*35)+15,200-arrValues[j],20,arrValues[j]+5);
				objGraphics.DrawRectangle(Pens.Black,(j*35)+15,200-arrValues[j],20,arrValues[j]+5);
			}

			float sglCurrentAngle;
			float sglTotalAngle=0;

			for(int a=0;a<arrValues.Length-1;a++)
			{
				sglTotalAngle += arrValues[a];//取得数据总量
			}

			for(int b=0;b<arrValues.Length;b++)
			{
				sglCurrentAngle = arrValues[b]/sglTotalAngle*360;//求出该数据所占总数据的百分比
				objGraphics.FillPie(new SolidBrush(GetColor(b)),220,95,100,100,sglTotalAngle,sglCurrentAngle);//画出椭圆
				sglTotalAngle+=sglCurrentAngle;
			}

			objBitMap.Save(Response.OutputStream,ImageFormat.Gif);//该位图对象以"GIF"格式输出


		}

		private Color GetColor(int itemIndex)
		{
			Color objColor = new Color();
			switch(itemIndex)
			{
				case 0:
					objColor = Color.Blue;
					break;
				case 1:
					objColor = Color.Yellow;
					break;
				case 2:
					objColor = Color.Red;
					break;
				case 3:
					objColor = Color.Orange;
					break;
				case 4:
					objColor = Color.Purple;
					break;
				case 5:
					objColor = Color.Brown;
					break;
				case 6:
				
				default:
					objColor = Color.Blue;
					break;
			}

			return objColor;
		}

		#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
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?