ASP.NET自身提供的画图功能也是很强大的,在实际的项目中有时也会经常用到的,实现这样的功能方法很多,诸如水晶报表之类也可以实现,但有时我们只想实现单一的某些功能或许就可以考虑画图的功能了。实现画图其实并不难,这里介绍的是通过Graphics类来产生一个Bitmap对象,接下去你是直接写到页面还是生成某个图片保存至某个路径,看你自己方便了,gfreesky在这里选择了后者作为示例,如果各位朋友有什么不明白的可以留言或Email给我,我的Email:gfreesky@gmail.com
废话不多说,先看下效果:
好了,切入正题,首先页面部分
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" />
</div>
</form>
<div>
<asp:Image ID="Image1" runat="server" />
</div>
</form>
后台cs:
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using SkyNet.Chart;
using SkyNet.OA.OAWebUtility;
public partial class SkyNetChart_MyBar : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitChart();
}
}
private void InitChart()
{
Bar barImg = new Bar(); //定义一个画图类实例
barImg.Title = "2008年销售情况统计表";
barImg.TextColor = Color.Red;
barImg.DS = GetDSBySale(); //这里若不设置,则采用默认的
string imgPath = "../ChartImages/" + "MyBar.jpg";
ChartHelper.CreateChartByBar(barImg, imgPath, ImageFormat.Jpeg);
this.Image1.ImageUrl = imgPath;
}
private DataSet GetDSBySale()
{
string constr = "server=.;database=test;uid=sa;pwd=";
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;
}
}
using System.Drawing;
using System.Drawing.Imaging;
using SkyNet.Chart;
using SkyNet.OA.OAWebUtility;
public partial class SkyNetChart_MyBar : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitChart();
}
}
private void InitChart()
{
Bar barImg = new Bar(); //定义一个画图类实例
barImg.Title = "2008年销售情况统计表";
barImg.TextColor = Color.Red;
barImg.DS = GetDSBySale(); //这里若不设置,则采用默认的
string imgPath = "../ChartImages/" + "MyBar.jpg";
ChartHelper.CreateChartByBar(barImg, imgPath, ImageFormat.Jpeg);
this.Image1.ImageUrl = imgPath;
}
private DataSet GetDSBySale()
{
string constr = "server=.;database=test;uid=sa;pwd=";
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
至此,Pie结束
下面贴出ChartHelper类
public class ChartHelper
{
/// <summary>
/// 创建一个Pie图--圆饼图
/// </summary>
/// <param name="pieImg">Pie类的实例(设置标题、宽度、高度等)</param>
/// <param name="imgPath">生成Pie图的图片路径(相对路径)</param>
/// <param name="imgFormat">生成Pie图的图片格式(如:ImageFormat.Jpeg)</param>
public static void CreateChartByPie(Pie pieImg,string imgPath,ImageFormat imgFormat)
{
try
{
if (pieImg == null)
{
pieImg.Title = "Pie图统计表示例";
pieImg.TitleBrush = Brushes.Red;
pieImg.Width = 800;
pieImg.Height = 500;
}
Bitmap bmp = pieImg.CreateImage();
string savePath = HttpContext.Current.Server.MapPath(imgPath);
bmp.Save(savePath, imgFormat);
}
catch(Exception ee)
{
throw ee;
}
}
}
{
/// <summary>
/// 创建一个Pie图--圆饼图
/// </summary>
/// <param name="pieImg">Pie类的实例(设置标题、宽度、高度等)</param>
/// <param name="imgPath">生成Pie图的图片路径(相对路径)</param>
/// <param name="imgFormat">生成Pie图的图片格式(如:ImageFormat.Jpeg)</param>
public static void CreateChartByPie(Pie pieImg,string imgPath,ImageFormat imgFormat)
{
try
{
if (pieImg == null)
{
pieImg.Title = "Pie图统计表示例";
pieImg.TitleBrush = Brushes.Red;
pieImg.Width = 800;
pieImg.Height = 500;
}
Bitmap bmp = pieImg.CreateImage();
string savePath = HttpContext.Current.Server.MapPath(imgPath);
bmp.Save(savePath, imgFormat);
}
catch(Exception ee)
{
throw ee;
}
}
}
好到此,画图全部结束,如果以上您有看不懂的,请留言或发Email