logo

关于 在ASP.NET中动态创建柱状图和饼图 的评论:

评论日期:2004年03月27日 00:00:00 评论人:telcom
你好,如果我每天的销售数据在几百万条,一个月就上千万条,怎么解决速度很慢的问题,就算调用存储过程,也还是很慢,在WEB页浏览的时间起不是很长,有什么好的方法发邮件给我 china_telcom@126.com
评论日期:2004年04月11日 00:00:00 评论人:wulongtianzi
有没有C#版本的。有的话give me。发邮件:wulongtianzi@163.com
评论日期:2004年04月13日 00:00:00 评论人:terran731
请问下有没有C#版本的。terran731@vip.sina.com
评论日期:2004年04月21日 00:00:00 评论人:david
请问有没有C#版本的。davidhz21cn.163.com
评论日期:2004年05月04日 00:00:00 评论人:111-zgq
有C#版给我发一份,谢谢!
评论日期:2004年05月19日 00:00:00 评论人:非常好
请问有没有C#版本的,有的话给我发一份可以吗?谢谢
评论日期:2004年05月24日 00:00:00 评论人:wwwrabbit
有C#版的程序示例吗?
评论日期:2004年05月25日 00:00:00 评论人:Adid
在VB.NET调试通过
评论日期:2004年06月17日 00:00:00 评论人:chang1216
请问有c#版的吗?劳驾给我发一个 谢谢 小弟初学asp.net!!!!!
评论日期:2004年06月30日 00:00:00 评论人:huqh
你好,如果数据很多(如几十、百万条),怎么解决速度很慢的问题,即使调用存储过程、使用ADo等,也还是很慢,在WEB页浏览的时间太长了,有什么好的方法?请发邮件给我    huqinghai@eyou.com
评论日期:2004年07月21日 00:00:00 评论人:Robinsonzhan
我也要C#版的。有的话,麻烦帮我发一下。还有,怎样在柱状图和饼图上表示数据。support@fuya.cn
评论日期:2004年07月21日 00:00:00 评论人:Robinsonzhan
怎样在柱状图和饼图上“标示”数据?
评论日期:2004年08月04日 00:00:00 评论人:Robinsonzhan
孟子大哥,不能帮我回复一下吗。在饼状图上如何标示数据,百分比。
评论日期:2004年08月24日 00:00:00 评论人:weifeng
正如孟大哥所说的.NET 框架类库中还提供了更高级的二维和矢量图形功能,利用这些高级功能,我们可以创建出二维或矢量的图形。现在我就是想实现二维功能,从哪里可以得到帮助,还请各位不吝赐教。谢谢!
评论日期:2004年08月31日 00:00:00 评论人:enjsky
我从数据库里面取出了数据后存放到了一个这样的dataset.table里面:(一个显示人数的二维表)
****  正高  副高  中级  初级 
男  38  62  56  12 
女  7  37  55  10 

现在我希望能做到如下功能:

****  正高  副高  中级  初级 
男  38  62  56  12  绘图
女  7  37  55  10  绘图
绘图 绘图 绘图 绘图
 点了绘图就绘个对应的图出来,想上面的那样那个能帮我写个吗?(C#的)
评论日期:2004年08月31日 00:00:00 评论人:gzj
孟子大哥,不能帮我回复一下吗。在饼状图上如何标示数据,百分比。
评论日期:2004年08月31日 00:00:00 评论人:enjsky
在饼状图上如何标示数据 的我已经解决了,发给大家看一下,学习....

C#代码如下:
namespace per_mang 
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;


/// <summary>
/// Chart 的摘要说明。
/// </summary>
public class Chart : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Bitmap objBitMap = new Bitmap(700, 500); 
Graphics objGraphics; 
objGraphics = Graphics.FromImage(objBitMap); 
objGraphics.Clear(Color.White); 
StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);
StringFormat drawFormat1 = new System.Drawing.StringFormat(StringFormatFlags.DisplayFormatControl);
int[] arrValues = {300,135,115,125,75,120};
string[] arrValueNames = new string[]{"一月","二月","三月","四月","五月","六月"}; 
objGraphics.DrawString(" X 公司上半年销售情况", 
new Font("宋体", 16), Brushes.Black,200,0,drawFormat1); 
PointF symbolLeg = new PointF(500, 20); 
PointF descLeg = new PointF(560, 16); 
//显示什么颜色代表什么的
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 i = 0; i < arrValues.Length; i++) 

objGraphics.FillRectangle(new SolidBrush(GetColor(i)), (i * 35) + 15, 400 - arrValues[i], 20, 
arrValues[i] + 5); 
objGraphics.DrawRectangle(Pens.Black, (i * 35) + 15, 400 - arrValues[i], 20, arrValues[i] + 5); 
objGraphics.DrawString(arrValueNames[i].ToString() + "【"+ arrValues[i].ToString()+"】", new Font("宋体", 10), Brushes.Black,(i * 35) + 15,310 - arrValues[i], drawFormat); 


float sglCurrentAngle = 0; 
float sglTotalAngle = 0; 
float sglTotalValues = 0; 
for (int i = 0; i <= arrValues.Length - 1; i++) 

sglTotalValues += arrValues[i]; 

for (int i = 0; i < arrValues.Length; i++) 

sglCurrentAngle = arrValues[i] / sglTotalValues * 360; 
objGraphics.FillPie(new SolidBrush(GetColor(i)), 420, 300, 100, 100, sglTotalAngle, sglCurrentAngle); 
objGraphics.DrawPie(Pens.Black, 420, 300, 100, 100, sglTotalAngle, sglCurrentAngle); 
sglTotalAngle += sglCurrentAngle; 

objBitMap.Save(Response.OutputStream, ImageFormat.Gif); 

}
private Color GetColor(int itemIndex) 

Color objColor; 
if (itemIndex == 0) 

objColor = Color.Blue; 

else if (itemIndex == 1) 

objColor = Color.Red; 

else if (itemIndex == 2) 

objColor = Color.Yellow; 

else if (itemIndex == 3) 

objColor = Color.Purple; 

else if (itemIndex == 4) 

objColor = Color.Orange; 

else if (itemIndex == 5) 

objColor = Color.Brown; 

else if (itemIndex == 6) 

objColor = Color.Gray; 

else if (itemIndex == 7) 

objColor = Color.Maroon; 

else if (itemIndex == 8) 

objColor = Color.Maroon; 

else 

objColor = Color.Blue; 

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

评论日期:2007年05月15日 00:00:00 评论人:fang
我想在饼状图中的每部分标出它所占的百分比,应该怎么实现啊?谢谢解答!
评论日期:2007年10月08日 00:00:00 评论人:chuzhaowei
看看这个
  www.it846.com/chart
评论日期:2004年12月13日 00:00:00 评论人:honeyrose
请问我在C#代码中的private void Page_Load(object sender, System.EventArgs e)
{Response.Write("test");}
为什么在调试之后就看不到图片了呢?


评论日期:2004年12月13日 00:00:00 评论人:honeyrose
原来的代码没有改动,只是加了句Response.Write("test");
评论日期:2004年12月13日 00:00:00 评论人:honeyrose
我是想从数据库中提取数据,替换数组里里的数据,结果就看不到图片了。所以就先后用了Response.Write("test"),一个空函数试了一下,结果发现是加任何代码都不显示图片!
评论日期:2004年12月13日 00:00:00 评论人:honeyrose
问题已经自己解决了~
评论日期:2005年01月11日 00:00:00 评论人:Leo
矩形上面标数据,数据自己写死也行,从数据库里读也行
void bitgraphics()
{
Bitmap objBitMap = new Bitmap(650, 150); 
Graphics objGraphics; 
objGraphics = Graphics.FromImage(objBitMap); 
objGraphics.Clear(Color.White); 
objGraphics.DrawString(" 部门现金到帐龙虎榜", new Font("verdana",10), Brushes.Black, new PointF(5, 5)); 


for(int i=0;i<Icount;i++)

int x=(i*95)+15;
int y=187- arrValues[i];
PointF descLeg = new PointF(x, y); 

objGraphics.DrawString("¥"+arrValueNames[i].ToString(), new Font("verdana", 10), Brushes.Black, descLeg); 

for(int i=0;i<Icount;i++)

objGraphics.FillRectangle(new SolidBrush(GetColor(i)), (i * 95) + 15, 200 - arrValues[i], 80, 
arrValues[i] + 15); 
objGraphics.DrawRectangle(Pens.Black, (i * 95) + 15, 200 - arrValues[i], 80, arrValues[i] + 15); 

objBitMap.Save(Response.OutputStream, ImageFormat.Gif); 
}
评论日期:2005年01月21日 00:00:00 评论人:Lee
能不能把2进制流直接写成图片格式<img src=..>而不是写在窗体里面?
评论日期:2006年08月02日 00:00:00 评论人:
太帅了
评论日期:2006年08月29日 00:00:00 评论人:翔龙不悔
objGraphics.Clear(Color.White); 

如何设置能让图片背景透明呢?
或者我可以自己设置自定义的背景色呢?
评论日期:2007年04月01日 00:00:00 评论人:21kg
非常感谢
己经调试通过取数据库数据绘图了
评论日期:2007年08月30日 00:00:00 评论人:cyl
孟大哥,你真的很强,帮了小弟的大忙了,十分感谢
评论日期:2007年09月19日 00:00:00 评论人:
vs05通过
评论日期:2007年12月31日 00:00:00 评论人:dongmr2003
孟老大你好,请问如何实现实时曲线图的绘制?就是象任务管理器那种刷新的,谢谢指点!!!
评论日期:2008年03月24日 00:00:00 评论人:
这种是小儿科。不知老孟会不会制作K线呀?
评论日期:2008年08月11日 00:00:00 评论人:Lxg
请问:
    有做过在Excel中生成图表的例子吗?
     For example:根据Excel中Sheet1里的数据,让他在Sheet2中生成折线图或者柱状图。
评论日期:2008年09月06日 00:00:00 评论人:



推荐给Web程序员, 

学习网络赚钱 [ www.888RMB.com.cn ] 为中国赚钱网站, 

提供赚钱教程、赚钱经验、赚钱 秘籍、赚钱项目、赚钱产品, 为想赚钱的人群提供一个赚钱的网络平台 



评论日期:2008年09月23日 00:00:00 评论人:mamxfx
这是C#编写的:希望对各位有帮助:::::有什么不好的请更正。。谢谢


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
public partial class Chart : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        int i;

        //   ''创建一个位图对象,用来放置柱形图,我们可以把它看作是一块画布。
        // ''这里宽、高分别是400和200,当然,你也可以根据需要把它们做为参数来进行传递。
       
        Bitmap objBitMap = new Bitmap(400, 200);

        // ''声明一个图形对象,在上面创建的位图上画图。 
        Graphics objGraphics;

        //  ''从指定的objBitMap对象创建新图形对象objGraphics。
        objGraphics = Graphics.FromImage(objBitMap);

        // ''清除整个绘图面并以指定白色为背景色进行填充。 
        objGraphics.Clear(Color.White);

        // ''创建一个数据源,这里我们为了方便其间,采用数组做为柱形图和饼图的数据源。 
        int[] arrValues = new int[6];
        arrValues[0] = 100;
        arrValues[1] = 135;
        arrValues[2] = 115;
        arrValues[3] = 125;
        arrValues[4] = 75;
        arrValues[5] = 120;

        // ''定义数组对象,用来描述图例。
        String[] arrValueNames = new string[6];
        arrValueNames[0] = "一月";
        arrValueNames[1] = "二月";
        arrValueNames[2] = "三月";
        arrValueNames[3] = "四月";
        arrValueNames[4] = "五月";
        arrValueNames[5] = "六月";

        //''在画布(objBitMap对象)的坐标5,5处,用指定的Brush(画笔)对象和Font(字体)对象绘制统计图标题。
     //  objGraphics.DrawString(" ", font("宋体", 16), Brushes.Black, pointF(5, 5));
        Font s = new Font("宋体", 16);
        objGraphics.DrawString("X 公司上半年销售情况", s, Brushes.Black, 5, 5);
        // ''创建图例文字。 
        PointF symbolLeg = new PointF(335, 20);
        PointF descLeg = new PointF(360, 16);
        //''画出图例。利用objGraphics图形对象的三个方法画出图例:
        //''FillRectangle()方法画出填充矩形,DrawRectangle()方法画出矩形的边框,
        //''DrawString()方法画出说明文字。这三个图形对象的方法在 .NET 框架类库类库中均已重载,
        //''可以很方便根据不同的参数来画出图形。
        for (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);

            // ''移动坐标位置,只移动Y方向的值即可。
            symbolLeg.Y += 15;
            descLeg.Y += 15;

        }

        // ''遍历数据源的每一项数据,并根据数据的大小画出矩形图(即柱形图的柱)。
        for (i = 0; i < arrValues.Length ; i++)
        {

            // ''画出填充矩形。
            objGraphics.FillRectangle(new SolidBrush(GetColor(i)), (i * 35) + 15, 200 - arrValues[i], 20, arrValues[i] + 5);
            //  ''画出矩形边框线。
            objGraphics.DrawRectangle(Pens.Black, (i * 35) + 15, 200 - arrValues[i], 20, arrValues[i] + 5);

        }

        // ''下面画饼图。先定义两个变量,代表当前角度和总角度,以便于画图时将角度进行按比例换算。 
        Single sglCurrentAngle = 0;
        Single sglTotalAngle = 0;

        //  ''定义一个变量,代表总的销售额。   
        Single sglTotalValues = 0;
        // ''计算总销售额。
        for (i = 0; i < arrValues.Length; i++)
        {
            sglTotalValues += arrValues[i];
        }

        i = 0;

        //  ''遍历数据源的每一项数据,并根据数据的大小画出饼图。
        // ''图形对象的FillPie()方法和DrawPie()在.NET 框架类库中已重载。

        for (i = 0; i < arrValues.Length; i++)
        {
            //  ''计算当前角度值:当月销售额 / 总销售额 * 360,得到饼图中当月所占的角度大小。 
            sglCurrentAngle = arrValues[i] / sglTotalValues * 360;

            //  ''画出填充圆弧。
            objGraphics.FillPie(new SolidBrush(GetColor(i)), 220, 95, 100, 100, sglTotalAngle, sglCurrentAngle);

            // ''画出圆弧线。
            objGraphics.DrawPie(Pens.Black, 220, 95, 100, 100, sglTotalAngle, sglCurrentAngle);

            //  ''把当前圆弧角度加到总角度上。
            sglTotalAngle += sglCurrentAngle;
        }

        // ''将objGraphics对象以指定的图形格式(这里是Gif)保存到指定的Stream对象,并输出到客户端。 
        objBitMap.Save(Response.OutputStream, ImageFormat.Gif);
    }

    // ''下面这段函数用来根据不同的月份返回不同的颜色值。
    private Color GetColor(int itemIndex)
    {
        Color objColor;
        switch (itemIndex)
        {
            case ''0'':
                objColor = Color.Blue;
                break;
            case ''1'':
                objColor = Color.Red;
                break;
            case ''2'':
                objColor = Color.Yellow;
                break;
            case ''3'':
                objColor = Color.Purple;
                break;
            case ''4'':
                objColor = Color.Orange;
                break;
            case ''5'':
                objColor = Color.Brown;
                break;
            case ''6'':
                objColor = Color.Gray;
                break;
            case ''7'':
                objColor = Color.Maroon;
                break;
            case ''8'':
                objColor = Color.Maroon;
                break;
            default:
                objColor = Color.Blue;
                break;
        }
        return objColor;
    }


}

评论日期:2009年04月15日 13:44:18 评论人:huihui
你们太抢了。太佩服你们了。
我要向你们学习呀!
评论日期:2011年02月16日 12:45:33 评论人:老晏
蛮不错的,很有参考价值,谢谢分享
发表评论:(由于众所周知的原因,评论需要审核后才能显示,请勿重复发评论。谢谢!!)
标题:
用户名:
内容:
验证码: 请输入右边图像中的文字。验证码