关于用ASP.net/C#画条形图,饼状图,曲线图的问题

sth79 2005-07-22 11:35:09
大体要求是从数据库中取出数据,然后生成相应的条形图,饼状图和曲线图,需要用asp.net和C#。本人目前还比较菜,对GDI+的了解还不太多,恳请高手能给我解释下这个绘图生成图片的基本流程,用到了那些类。我应该怎么做,需要看那些教程。最好能附几个例子。谢谢
...全文
430 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxilu 2005-09-07
  • 打赏
  • 举报
回复
owc非常好用.
我这里有例子.
anchky 2005-09-06
  • 打赏
  • 举报
回复
用微软给的控件就可以实现。office chart 和 office web component(owc)均可实现。自带的帮助文档是最好的教材(个人认为)。
oceanseleven 2005-08-15
  • 打赏
  • 举报
回复
可以考虑使用Infragistics的NETADVANGTIGE控件集,在WWW.VERYCD.COM上可以下载,其中的WINCHART图表控件功能强大,使用也方便
zoti 2005-08-05
  • 打赏
  • 举报
回复
这个还不错。你可以试试:

http://www.sharebank.com.cn/soft/soft_view.php?id=13459


效果截图:

http://www.sharebank.com.cn/upload/13459.jpg
ugvihc 2005-08-05
  • 打赏
  • 举报
回复
MSCHART
daishengs 2005-08-04
  • 打赏
  • 举报
回复
创建两个页面:panelChart.aspx,Chart.aspx
<%@ Page language="c#" Codebehind="panelChart.aspx.cs" AutoEventWireup="false" Inherits="aspCharts.AspxChart" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>AspxChart</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table width="75%" border="0">
<TR>
<TD align="middle"><IMG src="Chart.aspx">
</TD>
</TR>
<TR>
<TD align="middle" height="20">创建图形范例</TD>
</TR>
</table>
</form>
</body>
</HTML>


<%@ Page language="c#" Codebehind="Chart.aspx.cs" AutoEventWireup="false" Inherits="aspCharts.Chart" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Chart</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体"></FONT>
</form>
</body>
</HTML>
Chart.aspx.cs的代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
namespace aspCharts
{
/// <summary>
/// Chart 的摘要说明。
/// </summary>
public class Chart : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{

Graphics objGraphics;//建立画板对象
Bitmap objBitMap = new Bitmap(600,300);//建立位图对象
objGraphics = Graphics.FromImage(objBitMap);//根据位图对象建立画板对象
objGraphics.Clear(Color.White);//设置画板对象的背景色
int[] arrValues={0,0,0,0,0,0};//数据数组
arrValues[0]=50;
arrValues[1]=70;
arrValues[2]=90;
arrValues[3]=100;
arrValues[4]=140;
arrValues[5]=220;
string[] arrValueNames={"0","0","0","0","0","0"};//月份

arrValueNames[0] = "一月";
arrValueNames[1]="二月";
arrValueNames[2] = "三月";
arrValueNames[3]="四月";
arrValueNames[4]="五月";
arrValueNames[5]="六月";

objGraphics.DrawString("上半年销售情况统计",new Font("宋体",16),Brushes.Black,new PointF(0,0));

//创建图例文字
PointF symbolLeg = new PointF(335,20);
PointF descLeg = new PointF(360,16);

//画出图例。利用objGraphics图形对象的三个方法画出图例:
//FillRectangle()方法画出填充矩形,DrawRectangle()方法画出矩形的边框,
//DrawString()方法画出说明文字。这三个图形对象的方法在 .NET 框架类库类库中均已重载,
//可以很方便根据不同的参数来画出图形。

for(int i=0;i<arrValueNames.Length;i++)//画出各个月的标示图形
{
objGraphics.FillRectangle(new SolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);

objGraphics.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);

objGraphics.DrawString(arrValueNames[i].ToString(),new Font("宋体",10),Brushes.Black,descLeg);

symbolLeg.Y += 15;
descLeg.Y += 15;
}

for(int j = 0;j<arrValues.Length;j++)//画矩形图
{
objGraphics.FillRectangle(new SolidBrush(GetColor(j)),(j*35)+15,200-arrValues[j],20,arrValues[j]+5);
objGraphics.DrawRectangle(Pens.Black,(j*35)+15,200-arrValues[j],20,arrValues[j]+5);
}

float sglCurrentAngle;
float sglTotalAngle=0;

for(int a=0;a<arrValues.Length-1;a++)
{
sglTotalAngle += arrValues[a];//取得数据总量
}

for(int b=0;b<arrValues.Length;b++)
{
sglCurrentAngle = arrValues[b]/sglTotalAngle*360;//求出该数据所占总数据的百分比
objGraphics.FillPie(new SolidBrush(GetColor(b)),220,95,100,100,sglTotalAngle,sglCurrentAngle);//画出椭圆
sglTotalAngle+=sglCurrentAngle;
}

objBitMap.Save(Response.OutputStream,ImageFormat.Gif);//该位图对象以"GIF"格式输出


}

private Color GetColor(int itemIndex)
{
Color objColor = new Color();
switch(itemIndex)
{
case 0:
objColor = Color.Blue;
break;
case 1:
objColor = Color.Yellow;
break;
case 2:
objColor = Color.Red;
break;
case 3:
objColor = Color.Orange;
break;
case 4:
objColor = Color.Purple;
break;
case 5:
objColor = Color.Brown;
break;
case 6:

default:
objColor = Color.Blue;
break;
}

return objColor;
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
zx810903 2005-08-03
  • 打赏
  • 举报
回复
用不到GDI+,你用OWC就可以了
www8s88com 2005-07-25
  • 打赏
  • 举报
回复
用水晶报表Crystal Report。
yixiu121 2005-07-24
  • 打赏
  • 举报
回复
OWC
imoyo 2005-07-22
  • 打赏
  • 举报
回复
objgraphics.FillPie()

4,820

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧