gfreesky博客


    留下自己的脚印是一件很惬意的事:)
    博客园--美好愿望 美好生活......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET画图系列之实现Pie图(圆饼图)

Posted on 2008-10-26 13:06  gfreesky  阅读(3714)  评论(1编辑  收藏  举报

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

废话不多说,先看下效果:

好了,切入正题,首先页面部分

 

<form id="form1" runat="server">
        
<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;
    }

}

 

我这里为了方便就把某些代码写到页面里了,读者请自行考虑!

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

 

好到此,画图全部结束,如果以上您有看不懂的,请留言或发Email