graphcolumn.cs

来自「《精通ASP.NET2.0网络应用系统开发》书中的源码」· CS 代码 · 共 81 行

CS
81
字号
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;

namespace webvisitStatistic.Reporter.Graph
{
	/// <summary>
	/// GraphColumn 的摘要说明。
	/// </summary>
	public class GraphColumn
	{
		public class PointItem
		{
			public String	XUnit;
			public int 		Y;
		}

		public Bitmap BuildGraph()
		{
			const int SIDE_LENGTH = 400;
			const int CHART_TOP = 75;
			const int CHART_HEIGHT = 200;
			const int CHART_LEFT = 50;
			const int CHART_WIDTH = 300; 

			float highPoint = 0;
			foreach (PointItem item in PointItemList) {
				if( highPoint<item.Y )
					highPoint = item.Y;
			}

			Bitmap bm = new Bitmap(Width,Height,PixelFormat.Format24bppRgb);
			if(null==bm) return null;
			using(Graphics g = Graphics.FromImage(bm))
			{
				g.ScaleTransform(Width/SIDE_LENGTH,Height/SIDE_LENGTH);
				g.SmoothingMode = SmoothingMode.Default;
				g.TextRenderingHint = TextRenderingHint.AntiAlias;
				g.Clear(Color.White);	// 画背景颜色
				// 画边
				g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH,SIDE_LENGTH); 
				// 画大标题
				g.DrawString(Title, new Font("Tahoma",24),Brushes.Black, new PointF(5,5));
				float	barWidth = CHART_WIDTH/(PointItemList.Length*2); // 宽度
				PointF	barOrigin = new PointF(CHART_LEFT+barWidth/2,0);
				float   barHeight = 0;
			
				for (int i=0;i<PointItemList.Length;i++,barOrigin.X	+= barWidth * 2) 
				{
					barHeight = PointItemList[i].Y*CHART_HEIGHT/highPoint;
					barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
					g.FillRectangle(new SolidBrush(Color.SpringGreen), barOrigin.X, barOrigin.Y, barHeight, barWidth);
				}
				  
				// 画坐标轴
				g.DrawLine(new Pen(Color.Black,2)
					,new Point(CHART_LEFT,CHART_TOP)
					,new Point(CHART_LEFT,CHART_TOP+CHART_HEIGHT)); // 纵轴
				g.DrawLine(new Pen(Color.Black,2)
					,new Point(CHART_LEFT,CHART_TOP+CHART_HEIGHT)
					,new Point(CHART_LEFT+CHART_WIDTH,CHART_TOP+CHART_HEIGHT)); // 横轴
			}
			return bm; 
		}

		public String Title=String.Empty; // 标题
		public String Id=String.Empty;	 // 编号
		public String Name=String.Empty;  // 名字
		public String XDesc=String.Empty;
		public String YDesc=String.Empty;
		public String XUnit=String.Empty; 
		public String YUnit=String.Empty;
		public int	Width	= 0;
		public int  Height	= 0;
		
		public PointItem[] PointItemList;
	}
}

⌨️ 快捷键说明

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