ASP.NET自身提供的画图功能也是很强大的,在实际的项目中有时也会经常用到的,实现这样的功能方法很多,诸如水晶报表之类也可以实现,但有时我们只想实现单一的某些功能或许就可以考虑画图的功能了。实现画图其实并不难,这里介绍的是通过Graphics类来产生一个Bitmap对象,接下去你是直接写到页面还是生成某个图片保存至某个路径,看你自己方便了,在这里选择了后者作为示例,先看下效果:

好了,切入正题,首先页面部分
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" />
</div>
</form>
后台cs:
using System.Drawing; //Bitmap
using System.Drawing.Imaging; //ImageFormat
using SkyNet.Chart; //Pie类
using System.Data.SqlClient;
using SkyNet.OA.OAWebUtility;
public partial class SkyNetChart_MyPie : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitChart();
}
}
private void InitChart()
{
Pie pieImg = new Pie(); //定义一个画图类实例
SetData(pieImg);
string imgPath = "../ChartImages/"+"MyPie.jpg";
ChartHelper.CreateChartByPie(pieImg, imgPath, ImageFormat.Jpeg);
this.Image1.ImageUrl = imgPath;
}
private void SetData(Pie pieImg)
{
pieImg.Title = "2008年销售情况统计表";
pieImg.TitleBrush = Brushes.Red;
pieImg.Width = 800;
pieImg.Height = 500;
DataSet ds = GetDSBySale();
pieImg.DS = ds;
}
private DataSet GetDSBySale()
{
string constr = ""; //这里请大家自己设置
SqlConnection con = new SqlConnection(constr);
con.Open();
string cmdStr = "select CountryName,SaleSum from SaleOfCountry "; //注意前面第一个字段对应Keys,第二个字段为Values
SqlDataAdapter da = new SqlDataAdapter(cmdStr, con);
DataSet ds = new DataSet();
da.Fill(ds, "SaleOfCountry");
return ds;
}
}
我这里为了方便就把某些代码写到页面里了,读者请自行考虑!
SkyNet.Chart是一个命名空间,里面有Pie类,随后我将贴出,还包括我后面要讲的Curve类、Bar类等
其中的ChartHelper.CreateChartByPie(pieImg, imgPath, ImageFormat.Jpeg)方法我是在另外一个命名空间里定义的,命名空间是SkyNet.OA.OAWebUtility,随后我也会贴出
下面贴出SkyNet.Chart空间下的Pie类
首先是私有字段和属性
Code
using System.Drawing;
using System.Data;
namespace SkyNet.Chart
{
public class Pie
{
#region 私有字段
private Graphics objGraphics; //Graphics 类提供将对象绘制到显示设备的方法
private Bitmap objBitmap; //位图对象
private int m_Width = 700; //图像宽度
private int m_Height = 400; //图像高度
private string m_Title = "××公司销售情况统计表";
private string m_Unit = "万元";
//键
private string[] m_Keys = new string[] { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
//值
private float[] m_Values = new float[] { 21.5f, 36.2f, 48.7f, 55.4f, 21.6f, 12.8f, 99.5f, 36.4f, 78.2f, 56.4f, 45.8f, 66.4f };
private Color m_BgColor = Color.Snow; //背景
private Color m_TextColor = Color.Black; //文字颜色
private Color m_BorderColor = Color.Black; //整体边框颜色
//Pie颜色数组
private Color[] m_PieColor = new Color[]{Color.Green,Color.Red,Color.Yellow,Color.Blue,Color.Orange,Color.Aqua,
Color.SkyBlue,Color.DeepPink,Color.Teal,Color.Brown,Color.Navy,Color.Pink};
private DataSet m_ds;
private Brush m_titleBrush = Brushes.Black; //标题的画笔颜色
#endregion
#region 属性设置
public DataSet DS
{
get { return m_ds; }
set { m_ds = value; }
}
/// <summary>
/// 标题的画笔颜色
/// </summary>
public Brush TitleBrush
{
get { return m_titleBrush; }
set { m_titleBrush = value; }
}
public string[] Keys
{
set
{
m_Keys = value;
}
get
{
return m_Keys;
}
}
public float[] Values
{
set
{
m_Values = value;
}
get
{
return m_Values;
}
}
public int Width
{
set
{
if (value < 300)
{
m_Width = 300;
}
else
{
m_Width = value;
}
}
get
{
return m_Width;
}
}
public int Height
{
set
{
if (value < 300)
{
m_Height = 300;
}
else
{
m_Height = value;
}
}
get
{
return m_Height;
}
}
public string Title
{
set
{
m_Title = value;
}
get
{
return m_Title;
}
}
public string Unit
{
set
{
m_Unit = value;
}
get
{
return m_Unit;
}
}
public Color BgColor
{
set
{
m_BgColor = value;
}
get
{
return m_BgColor;
}
}
public Color TextColor
{
set
{
m_TextColor = value;
}
get
{
return m_TextColor;
}
}
public Color BorderColor
{
set
{
m_BorderColor = value;
}
get
{
return m_BorderColor;
}
}
public Color[] PieColor
{
set
{
m_PieColor = value;
}
get
{
return m_PieColor;
}
}
#endregion

