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 + -
显示快捷键?