asp.net中生成饼状与柱状图实例

本文实例讲述了asp.net中生成饼状与柱状图的实现方法。分享给大家供大家参考。具体方法如下:

一、生成图形的公共方法:


代码如下:

using System;
using System.Collections.Generic;
using System.Text;
//
//using System.Data;
//using System.Web.UI.WebControls;
//
using System.Drawing;
using System.Drawing.Imaging;
 
namespace Tools
{
    public static class OWCImageHelp
    {
        /// <summary>
        /// 动态的生成柱状图和饼状图
        /// </summary>
        /// <param name="arrValueNames">行坐标要显示的字段</param>
        /// <param name="arrValues">纵坐标要显示的数字</param>
        /// <param name="title">标题</param>
        public static void GetZBImage(string[] arrValueNames, int[] arrValues, string title)
        {
            Bitmap objBitMap = new Bitmap(650, 300);
            Graphics objGraphics;
            objGraphics = Graphics.FromImage(objBitMap);
            objGraphics.Clear(Color.White);
            //int[] arrValues = { 40000, 32000, 24000, 30000, 36000, 28000 };
            //string[] arrValueNames = new string[] { "第一次", "第二次", "第三次", "第四次", "第五次", "第六次" };
            objGraphics.DrawString(title, new System.Drawing.Font("宋体", 16), Brushes.Blue, new PointF(5, 5));
            PointF symbolLeg = new PointF(335, 20);
            PointF descLeg = new PointF(360, 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 System.Drawing.Font("宋体", 10), Brushes.Black, descLeg);
                symbolLeg.Y += 15;
                descLeg.Y += 15;
            }
            float TotalValues = 0;
            for (int i = 0; i <= arrValues.Length - 1; i++)
            {
                TotalValues += arrValues[i];
            }
            //绘出矩形图。
            float Rectangleheight = 0;
            PointF recLeg = new PointF(12, 200 - arrValues[0] / TotalValues * 300);
            for (int i = 0; i < arrValues.Length; i++)
            {
                Rectangleheight = arrValues[i] / TotalValues * 300;
                objGraphics.FillRectangle(new SolidBrush(GetColor(i)), (i * 35) + 15, 200 - Rectangleheight, 20, Rectangleheight + 50);
                objGraphics.DrawRectangle(Pens.Black, (i * 35) + 15, 200 - Rectangleheight, 20, Rectangleheight + 50);
                recLeg.Y = 200 - Rectangleheight - 14;
                objGraphics.DrawString(arrValues[i].ToString(), new System.Drawing.Font("宋体", 10), Brushes.Blue, recLeg);
                recLeg.X += 35;
            }
            //绘出圆形图。
            float sglCurrentAngle = 0;
            float sglTotalAngle = 0;
            for (int i = 0; i < arrValues.Length; i++)
            {
                sglCurrentAngle = arrValues[i] / TotalValues * 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;
            }
            objBitMap.Save(System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Gif);
        }
        //定义颜色。
        private static Color GetColor(int itemIndex)
        {
            Color objColor;
            if (itemIndex == 0)
            {
                objColor = Color.Maroon;
            }
            else if (itemIndex == 1)
            {
                objColor = Color.Red;
            }
            else if (itemIndex == 2)
            {
                objColor = Color.Gray;
            }
            else if (itemIndex == 3)
            {
                objColor = Color.Blue;
            }
            else if (itemIndex == 4)
            {
                objColor = Color.Orange;
            }
            else if (itemIndex == 5)
            {
                objColor = Color.Cyan;
            }
            else if (itemIndex == 6)
            {
                objColor = Color.Bisque;
            }
            else if (itemIndex == 7)
            {
                objColor = Color.Maroon;
            }
            else if (itemIndex == 8)
            {
                objColor = Color.Maroon;
            }
            else
            {
                objColor = Color.Blue;
            }
            return objColor;
        }
    }
}

二、新建生成饼状柱状图页面BZImage.aspx:
后台:

代码如下:

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 BLL;
using Models;
public partial class GridViewDemo_BZImage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        GetBZIamge();
    }
    /// <summary>
    /// 生成饼状柱状图
    /// </summary>
    public void GetBZIamge()
    {
        DataTable dt = BLL.StudentBLL.SelAllStudent();
        string[] rows = new string[dt.Rows.Count];
        int[] columns = new int[dt.Rows.Count];
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            rows[i] = dt.Rows[i]["学生姓名"].ToString();
            columns[i] = Convert.ToInt32(dt.Rows[i]["薪金"].ToString());
        }
        Tools.OWCImageHelp.GetZBImage(rows, columns, "学生薪水查询");
    }
}

三、显示饼状柱状图的页面:
前台:

代码如下:

<table style="width: 600px" onMouseOver="over()" onMouseOut="out()">
            <tr>
             <td style="height: 21px; width: 35px;" align="center">
                    <img id="BZImage" src="BZImage.aspx" alt=""/>
                </td>
            </tr>
</table>

希望本文所述对大家的asp.net程序设计有所帮助。

(0)

相关推荐

  • asp.net 生成曲线图实现代码

    我的Dataset是从表Sendrec里读取的数据,分别有Id,Sendid(订单号),Sendtime(记录时间),Sendnum(单位时间发送量/我这里是五分钟)几个字段 过程如下: public void draw(Page page,DataSet ds,int Tnum){} 其中page是用来传递引用这个过程的页面,这样让页面是JPG方式直接向客户端输出生成的曲线图. ds就是取出来的数据集了 Tnum只是我这里要用到的一个参数,不想让这个类去接触读取过程,所以把订单的总量直接取出后

  • asp.net生成缩略图示例方法分享

    做站的时候经常会遇到要生成缩略图的功能,因为可能不同的情况需要用来不同大小的缩略图. 本文生成的图片都为正方形,只有正方形的缩略图才是保证图片足够清晰. 当我我这里说的正方形是先按比例压缩,然后加一个固定的白底 然后居中显示. 代码: 新建outputimg.ashx 复制代码 代码如下: //调整图片大小private static Size NewSize(int maxWidth, int maxHeight, int Width, int Height)        {        

  • ASP.Net页面生成饼图实例

    本文实例讲述了ASP.Net页面生成饼图的方法.分享给大家供大家参考.具体实现方法如下: 1.生成普通饼图: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebCon

  • asp.net验证码图片生成示例

    验证码是一张图片.我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx). 复制代码 代码如下: <script language="javascript"> function changeImg() {            $("#imgCheckNo").attr("src", "ValidateImage.aspx?r=" + getRandom(999

  • asp.net中生成缩略图并添加版权实例代码

    复制代码 代码如下: //定义image类的对象Drawing.Image image,newimage;//图片路径protected string imagePath;//图片类型protected string imageType;//图片名称protected string imageName;//提供一个回调方法,用于确定Image对象在执行生成缩略图操作时何时提前取消执行//如果此方法确定 GetThumbnailImage 方法应提前停止执行,则返回 true:否则返回 false

  • ASP.NET上传图片并生成可带版权信息的缩略图

    复制代码 代码如下: <%@ Page Language="C#" ResponseEncoding="gb2312" %> <%@ import Namespace="System" %> <%@ import Namespace="System.IO" %> <%@ import Namespace="System.Drawing" %> <%@ i

  • asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印)

    前言 上传功能,是大家经常用到了,可能每一个项目都可以会用到.网上到处都有上传功能的代码.比我写的好的有很多.我这里也仅是分享我的代码. 功能实现点 1.单个文件上传: 2.多个文件上传: 3.对于图片等类型的图像,可以自定义生成缩略图大小: 4.文件服务器扩展. 模式 主要使用的是"模板方法"的设计模式. 本文章的功能优缺点 1.可以自定义生成缩略图的大小,任意定义.对于像微生活运动户外商城(http://sports.8t8x.com/) .淘宝网等的网站,他们需要上传大量的商品图

  • ASP.NET生成Google网站地图的代码

    复制代码 代码如下: /// <summary> /// 生成google网站地图 /// </summary> /// <returns></returns> public static boolBuildGoogleSitemap() { try { string RootDirectory = AppDomain.CurrentDomain.BaseDirectory; XmlTextWriter Writer = new XmlTextWriter(

  • asp.net图片上传生成缩略图的注意事项

    bitmap.Save(imgPath,ImageFormat.Jpeg);   //这是保存缩略图的一段代码,其中的ImageFormat.Jpeg一定不能省略,即使你保存的文件本来就是jpg格式的,也不能去掉.因为如果去掉的话,生成的缩略图比原始图片还要大! //另外,imgPath必须首先创建,否则会产生GDI+的一般性错误. path=System.Web.HttpContext.Current.Server.MapPath(path); 使用if(!System.IO.Director

  • asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法

    1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用Aspose.Words for .NET在Word中动态的生成图片或水印.Aspose.Words for .NET,这个我就不多介绍了,不清楚的朋友可以看看上一篇文章.需求总是变化得快,最近项目中又多了一个这样需求:系统中生成报价单后,要有一个签名,这个签名是根据不同用户来生成的图片.好了,下面

随机推荐