asp.net图表统计类

asp.net|统计|图表

前段时间项目需要,写了一个简单的图标统计类.决定以后写点东西到Blog来.

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

namespace CrystalReportsDemo
...{
    /**//// <summary>
    /// createReport绘制图形报表-柱图。
    /// </summary>
    public class createReport
    ...{

        public createReport()
        ...{
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        public Bitmap CreatePictureReport(string[] x,int[] y,string ReportName)
        ...{
            if(x.Length != y.Length)
            ...{
                throw new Exception("X和Y数目不一致");
            }
            int colNum=y.Length;
            int colScale=880/(colNum+1);

            Bitmap bmp = new Bitmap(900,700,PixelFormat.Format24bppRgb);
            Graphics dc = Graphics.FromImage(bmp);
            dc.FillRectangle(new SolidBrush(Color.White),0,0,900,700);

            Pen scalePen = new Pen(Color.Black,2);
            Pen gridPen = new Pen(Color.Black,1);
       

            dc.DrawLine(scalePen,20,680,880,680);
            dc.DrawLine(scalePen,20,680,20,20);

            dc.DrawLine(gridPen,20,20,880,20);
            dc.DrawLine(gridPen,880,20,880,680);

            Point drawPoint;
            int XPoint;
            int YHeight;
            if(colNum==0)
            ...{
                throw new Exception("无数据值,colNum值为0作为除数,抛出异常");
                    
            }
            int drawWidth=880/(4*colNum);
            //int drawWidth=580/(4*colNum+1);//4*colNum+1  确保colNum不为0.否则580/(4*0);的话会异常.0不能作为除数
            int maxNum=getMaxNum(y);
            Rectangle rct;
            Random rnd = new Random();
            int red,green,blue;

            for(int i=20;i<680;i=i+96)
            ...{
                dc.DrawLine(gridPen,20,i,880,i);
            }

            for(int i=0;i<colNum;i++)
            ...{
                red=rnd.Next(0,255);
                green=rnd.Next(0,255);
                blue=rnd.Next(0,255);
                SolidBrush brush=new SolidBrush(Color.FromArgb(red,green,blue));
                XPoint=20+((i+1)*colScale)-drawWidth;
                YHeight=y[i]*650/maxNum;
                drawPoint=new Point(XPoint,680-YHeight);
                rct=new Rectangle(drawPoint,new Size(drawWidth*2,YHeight));
                dc.FillRectangle(brush,rct);
                dc.DrawRectangle(gridPen,rct);
           
                //绘制X数值
                dc.DrawString(x[i],new Font("宋体",9),new SolidBrush(Color.OrangeRed),new PointF((float)(XPoint+drawWidth/2),680-YHeight/2));
                //绘制Y数值
                dc.DrawString(y[i].ToString(), new Font("宋体", 9), new SolidBrush(Color.Black), new PointF((float)(XPoint + drawWidth / 2), 680 - YHeight-15));
            }
           
           
            dc.DrawString(ReportName,new Font("宋体",10),Brushes.Black,3,3);
           
            return bmp;

            }
        private int getMaxNum(int[] arr)
        ...{
            int max=arr[0];
            for(int i=1;i<arr.Length;i++)
            ...{
                if(arr[i]>max)
                ...{
                    max=arr[i];
                }

            }
            return max;
       
        }
   
    }
}

 

时间: 2024-09-03 14:18:12

asp.net图表统计类的相关文章

实现ASP程序执行时间统计类的代码_ASP CLASS类

第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等.  复制代码 代码如下: Class ccClsProcessTimeRecorder  '程序作者:明月星光  '作者主页:http://www.5iya.com/blog  'http://www.kuozhanming.com  'ASP程序代码执行时间统计类    Private ccInti,ccIntNonceTime,ccIntDecimal    Private ccIntStartTime,ccIntEndTime

ASP程序代码执行时间统计类

程序|统计|执行 ASP程序代码执行时间统计类 第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等. 程序代码: Class ccClsProcessTimeRecorder''ASP程序代码执行时间统计类  Private ccInti,ccIntNonceTime,ccIntDecimal Private ccIntStartTime,ccIntEndTime,ccIntNow,ccIntNonce Private ccStrInterval,ccStrEvent,ccStrTi

ASP程序代码执行时间统计类_ASP CLASS类

第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等. 复制代码 代码如下: Class ccClsProcessTimeRecorder '程序作者:明月星光 '作者主页:http://www.5iya.com/blog 'http://www.kuozhanming.com 'ASP程序代码执行时间统计类   Private ccInti,ccIntNonceTime,ccIntDecimal   Private ccIntStartTime,ccIntEndTime,ccIntN

asp分页的一个类

分页 asp分页的一个类, 在50,000条记录下测试过,速度比ado的那个要快多了 <% '************************************************************************************'具体用法'Set conn=Server.CreateObject("ADODB.Connection")'conn.open "DRIVER={SQL Server};SERVER=(local);UID=s

ASP中的Debug类(VBScript)

debug|vbscript 不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法"response.write ",然后输出相关的语句来看看是否正确.前几天写了一个千行的页面,里面大概有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累! 今天看到一个ASP中的Debug类(VBS),试用了一下,绝! 使用方法很简单: test.asp &

如何用ASP编写网站统计系统

在目前的网站统计系统决大部分都是CGI的,但编写起来特别复杂,而ASP学起来简单,更有和数据库结合的优点,所以结合自己曾经做过的网站统计系统,和大家探讨一下ASP编写网站统计系统. 大家都看过网易的网站统计系统,它可以统计总访问量,每日平均访问量,当日访问量,最高访问量,最高访问日期,日流量分析,月流量分析,周流量分析,浏览器分析,等等. 其实要做一个ASP的访问统计系统关键是系统表结构的设计.以及如何来采集用户的CGI变量,如何来显示用户的信息.也就是说系统的关键是两个ASP程序,统计程序和显

如何用ASP编写网站统计系统(四) (转自gaoshan)

统计 如何用ASP编写网站统计系统(四) 本文只做方法探讨. 能采集数据我们都能采到了,那么我们就开始编制ASP的统计页面. 这一页我们叫计数页,counter.asp 这段asp代码我们需要让它按如下的流程进行采集数据并保存数据和更新数据: 采集用户名,判断用户名是否合法,采集访问者的信息,对信息进行加工,进行保存和更新数据库,返回logo图标. 调用这个ASP用counter.asp?user=abc这个方式. 采集用户名我们可以用Request对象的相应方法取得,然后检查用户表判断用户是否

如何用ASP编写网站统计系统(三) (转自gaoshan)

统计 如何用ASP编写网站统计系统(三) 设计表结构是一项极其重要的工作,它的合理与否与程序的编制紧密相关. 一个网站统计系统应该有一个用户表,统计值表. 这个用户表也就是保留注册用户信息的表,统计值表就是记录用户的每一项统计指标值的表.在统计值的表中我们可以指定用户的统计指标,我们可把每一个指标用一个ID值来表示,这里我们简单举例. 用户表: Table Name:regist_table Field type username C 用户名 password C 密码 regdate C 注册

如何用ASP编写网站统计系统(二) (转自gaoshan)

统计 如何用ASP编写网站统计系统(二) 1.取得用户的操作系统. 在ASP中使用如下语句可以得到访问者的http_user_agent字符串. Dim StrUserAgent StrUserAgent=Request.ServerVariables("HTTP_USER_AGENT") 这个字符串一般是如下格式: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) 上面的字符串可以说明访问者使用的操作系统是Windows98,浏览器是MS