Web页面中柱状统计图

2024-02-11 22:08
文章标签 web 页面 统计图 柱状

本文主要是介绍Web页面中柱状统计图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Web页面中柱状统计图

//部分代码参考了http://www.yesky.com/20030324/1658705_2.shtml

//Page_Load事件如果改成从数据库中获取数据,就能根据数据库中的数据进行绘图了

public class bitmappicture : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面

   //标题

  string title="年度销售业绩统计";
  //数据数组

  float []Arr={3,5,6,11,33,16,10,8,21,19,11,20};   

   //string []Arr1={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};

  //类别数组

  string ARR="一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月";

  string []Arr1=ARR.Split(',');

  barpicture(title,Arr,Arr1);  //调用绘图函数 
  }

 

  //函数中的三参数分别为:标题,数据数组,类别数组
  private void barpicture(string title,float []Arr,string []Arr1)
  {
   //显示屏幕分辨率
   int ScreenWidth=800;
   int ScreenHeight=600;
   int XX=100;//Y轴竖直位置 直线y=XX
   int YY=ScreenHeight-XX;//X轴水平位置 直线x=YY
   int XD=50;//X轴步距
   int YD=10;//Y轴步距
   int WW=25;//柱形宽度
   int KD=YD;//Y轴上的最小刻度值,为精确标刻必须同Y轴步距相关
   

  //创建一个宽度为ScreenWidth,高度为ScreenHeight的Bitmap实例

   Bitmap bm = new Bitmap(ScreenWidth,ScreenHeight);

  //由此Bitmap实例创建Graphic实例  

   Graphics g = Graphics.FromImage(bm);

  g.Clear(Color.Snow);

   g.DrawString(title,new Font("宋体",20),Brushes.Blue,ScreenWidth/2-80,80);//绘制标题
   
   //绘制坐标
   Pen p1=new Pen(Brushes.Black,3);//定义绘制坐标的画笔
   g.DrawLine(p1,new Point(XX,YY),new Point(ScreenWidth-XX,YY));//绘制X轴
   g.DrawLine(p1,new Point(XX,XX),new Point(XX,YY));//绘制Y轴
   //绘制Y轴上的刻度
   for(int j=0;j<(YY-XX)/KD;j++)
   {
    if(j%3==0) //避免Y轴上刻度太密,所以每3个标一个刻度
    {
     g.DrawLine(p1,new Point(XX,YY-j*KD),new Point(XX+10,YY-j*KD));//刻度短划线
     g.DrawString(j.ToString(),new Font("Arial",15,FontStyle.Regular),Brushes.Black,XX-30,YY-10-j*KD);

   //刻度值
    }
   }
   //绘制X轴上的标识和柱形所表示的数据
   for(int i=0;i<Arr.Length;i++)
   {    
    g.DrawRectangle(new Pen( GetColor(i)),XX+20+i*XD,YY-Arr[i]*YD,WW,Arr[i]*YD); //绘制柱形 
    g.FillRectangle(new SolidBrush( GetColor(i)),XX+20+i*XD,YY-Arr[i]*YD,WW,Arr[i]*YD); //用颜色填充柱形
    g.DrawString(Arr[i].ToString(),new Font("Arial",20),Brushes.Black,XX+20+i*XD,YY-Arr[i]*YD-40);//标识数据
    g.DrawString(Arr1[i],new Font("Arial",15),Brushes.Black,XX+5+i*XD,YY+30);//标识每个柱状对应的月份
   }

   Pen p=new Pen(Brushes.Black,3);//绘制边框的画笔
   g.DrawRectangle(p,20,20,ScreenWidth-40,ScreenHeight-40); //绘制边框
   bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

  }

 

  //颜色函数
  private Color GetColor ( int itemIndex )
  {
    Color MyColor ;
    int i = itemIndex ;
    switch ( i )
    {
     case 0 :
      MyColor = Color.Silver ;
      return MyColor ;
     case 1 :
      MyColor = Color.Red ;
      return MyColor ;
     case 2 :
      MyColor = Color.Yellow ;
      return MyColor ;
     case 3 :
      MyColor = Color.Peru ;
      return MyColor ;
     case 4 :
      MyColor = Color.Orange ;
      return MyColor ;
     case 5 :
      MyColor = Color.Coral ;
      return MyColor ;
     case 6:
      MyColor = Color.Gray ;
      return MyColor ;
     case 7:
      MyColor = Color.Maroon ;
      return MyColor ;
     case 8:
      MyColor = Color.SeaGreen ;
      return MyColor ;
     case 9:
      MyColor = Color.Teal ;
      return MyColor ;
     case 10:
      MyColor = Color.RoyalBlue ;
      return MyColor ;
     case 11:
      MyColor = Color.BurlyWood ;
      return MyColor ;
     case 12:
      MyColor = Color.Chartreuse ;
      return MyColor ;
     default:
      MyColor = Color.Green ;
      return MyColor ;
    }
  }


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

原贴:http://lcszndx.bokee.com/viewdiary.11080075.html 作者:

相关贴子:

http://www.yesky.com/20030324/1658705_2.shtml

http://www.yesky.com/20020627/1617851.shtml



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1046125

 

这篇关于Web页面中柱状统计图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700912

相关文章

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D