RSS
热门关键字:  csf  c语言  CSS  数据结构  asp
当前位置 : 主页».NET»Asp.net»

ASP.NET实现Pie图(圆饼图)

来源:互联网 作者:佚名 时间:10-31 16:02:14 浏览:

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

上一页12 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名评论
立即注册账号