C#生成柱状图,包括刻度,刻度值.

http://blog.csdn.net/xyz7885696/article/details/2482842

using System;
using System.Data;
using System.Configuration;
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.Drawing2D;

namespace qyjz
{
    public class DrawHelper
    {
        /// <summary>
        ///渐变颜色的函数
        /// </summary>
        /// <returns>LinearGradientBrush 对象</returns>
        private LinearGradientBrush GetColor(int ylong)
        {
            LinearGradientBrush linGrBrush = new LinearGradientBrush(
            new Point(0, 0),
            new Point(0, ylong),
            Color.FromArgb(255, 255, 0, 0),   // Opaque red
            Color.FromArgb(255, 0, 0, 255));
            return linGrBrush;
        }
        /// <summary>
        /// 刻度线生成函数
        /// </summary>
        /// <param name="objGraphics">Graphics对象</param>
        /// <param name="intxLong">图像x大小</param>
        /// <param name="intyLong">图像y大小</param>
        /// <param name="intxLeft">图像左边巨</param>
        /// <param name="intEnd">图像下边距</param>
        /// <param name="intyMax">刻度数</param>
        /// <param name="kdvalue">刻度值</param>
        /// <returns></returns>
        public Graphics DwLine(Graphics objGraphics, int intxLong, int intyLong, int intxLeft, int intEnd, int intyMax, float kdvalue, string title)
        {
            objGraphics.Clear(Color.White);
            int intyScale = intyLong / intyMax;
            objGraphics.DrawString(title, new Font("宋体", 9), Brushes.Black, new PointF(5 + intxLeft, 5));
            Point p1 = new Point(intxLeft - 10, intyLong);
            Pen p = new Pen(Color.Silver);
            p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
            for (int i = 0; i < intyMax; i++)
            {
                p1.Y = intyLong - i * intyScale;
                Point pt = new Point(p1.X + 10, p1.Y);
                objGraphics.DrawLine(Pens.Black, pt, new Point(p1.X + 15, p1.Y));//刻度线y轴
                objGraphics.DrawLine(p, intxLeft, intyLong - intEnd - i * intyScale, intxLong, intyLong - intEnd - i * intyScale);
                objGraphics.DrawString(Convert.ToString(kdvalue * i), new Font("宋体", 9), Brushes.Black, new Point(p1.X - 20, p1.Y - 30));
            }
            objGraphics.DrawLine(new Pen(Color.Black, 2), intxLeft, intyLong - intEnd, intxLeft, 0);//绘制y轴
            objGraphics.DrawLine(new Pen(Color.Black, 2), intxLeft, intyLong - intEnd, intxLong, intyLong - intEnd);//绘制x轴
            return objGraphics;
        }
        /// <summary>
        /// 生成矩形图
        /// </summary>
        /// <param name="objGraphics">Graphics 对象</param>
        /// <param name="intxLong">图像x大小</param>
        /// <param name="intyLong">图像y大小</param>
        /// <param name="intxLeft">图像左边距</param>
        /// <param name="intEnd">图像下边距</param>
        /// <param name="intyMax">刻度数</param>
        /// <param name="kdvalue">刻度值</param>
        /// <param name="title">图片显示名</param>
        /// <param name="mydt">DataTable的值</param>
        /// <returns>Graphics</returns>
        public Graphics DwMonthjxt(Graphics objGraphics, int intxLong, int intyLong, int intxLeft, int intEnd, int intyMax, float kdvalue, DataTable mydt, int jdwidth)
        {
            int intyScale = intyLong / intyMax;
            float jx = Convert.ToInt32(jdwidth * 0.618);
            for (int i = 0; i < mydt.Rows.Count; i++)
            {
                float values = Convert.ToInt32(mydt.Rows[i]["co"].ToString());
                if (values != 0)
                {

                    objGraphics.FillRectangle(GetColor(intyLong), (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd, jx, values / kdvalue * intyScale);//画矩形内部图案
                    objGraphics.DrawRectangle(Pens.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd, jx, values / kdvalue * intyScale);//矩形外部图案
                    objGraphics.DrawString(mydt.Rows[i]["co"].ToString(), new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 15);//矩形上的数值
                    objGraphics.DrawString(mydt.Rows[i]["months"].ToString() + "月", new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - intEnd + 3);//x轴下的文字
                }
                else
                {
                    objGraphics.FillRectangle(GetColor(intyLong), (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 2, jx, values / kdvalue * intyScale + 2);//画矩形内部图案
                    objGraphics.DrawRectangle(Pens.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 2, jx, values / kdvalue * intyScale + 2);//矩形外部图案
                    objGraphics.DrawString(mydt.Rows[i]["co"].ToString(), new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 15);//矩形上的数值
                    objGraphics.DrawString(mydt.Rows[i]["months"].ToString() + "月", new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - intEnd + 3);//x轴下的文字
                }
            }
            return objGraphics;
        }
        /// <summary>
        /// 生成矩形图
        /// </summary>
        /// <param name="objGraphics">Graphics 对象</param>
        /// <param name="intxLong">图像x大小</param>
        /// <param name="intyLong">图像y大小</param>
        /// <param name="intxLeft">图像左边距</param>
        /// <param name="intEnd">图像下边距</param>
        /// <param name="intyMax">刻度数</param>
        /// <param name="kdvalue">刻度值</param>
        /// <param name="title">图片显示名</param>
        /// <param name="mydt">DataTable的值</param>
        /// <returns>Graphics</returns>
        public Graphics DwHourjxt(Graphics objGraphics, int intxLong, int intyLong, int intxLeft, int intEnd, int intyMax, float kdvalue, DataTable mydt, int jdwidth)
        {
            int intyScale = intyLong / intyMax;
            float jx = Convert.ToInt32(jdwidth * 0.618);
            for (int i = 0; i < mydt.Rows.Count; i++)
            {
                float values = Convert.ToInt32(mydt.Rows[i]["co"].ToString());
                if (values != 0)
                {

                    objGraphics.FillRectangle(GetColor(intyLong), (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd, jx, values / kdvalue * intyScale);//画矩形内部图案
                    objGraphics.DrawRectangle(Pens.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd, jx, values / kdvalue * intyScale);//矩形外部图案
                    objGraphics.DrawString(mydt.Rows[i]["co"].ToString(), new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 15);//矩形上的数值
                    objGraphics.DrawString(mydt.Rows[i]["Hours"].ToString() + "时", new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - intEnd + 3);//x轴下的文字
                }
                else
                {
                    objGraphics.FillRectangle(GetColor(intyLong), (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 2, jx, values / kdvalue * intyScale + 2);//画矩形内部图案
                    objGraphics.DrawRectangle(Pens.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 2, jx, values / kdvalue * intyScale + 2);//矩形外部图案
                    objGraphics.DrawString(mydt.Rows[i]["co"].ToString(), new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - values / kdvalue * intyScale - intEnd - 15);//矩形上的数值
                    objGraphics.DrawString(mydt.Rows[i]["Hours"].ToString() + "时", new Font("宋体", 9), Brushes.Black, (i * jdwidth) + intxLeft + 20, intyLong - intEnd + 3);//x轴下的文字
                }
            }
            return objGraphics;
        }
    }
}

时间: 2024-10-30 09:05:12

C#生成柱状图,包括刻度,刻度值.的相关文章

Java读取数据库数据生成柱状图

此案例是用swing显示数据的.需要引入jfreechart相关包,不同版本可能包不相同,本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class BarChart { ChartPanel frame1; public BarChart() { CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D("水果",

记一次非常无语的生成柱状图,js,ecshop。

如题,无语且非常郁闷. 要求是根据查询出来的数据动态生成柱状图.但是ecshop的查询ajax回调都是已经封装好了的.根本就不能改. 无奈之下只好百度了一个画柱状图的代码,每隔2秒抓取页面数据,重新绘制一次柱状图,假装自己是动态的.郁闷... 随便上个代码留个纪念,好歹做了三个小时.ummmm.... <canvas id="a_canvas" width="1000" height="700"></canvas> <

Oracle生成查询包括对应于所有数据表记录语句中指定的字段名

应用:已知的字段名,表中的所有数据的查询数据库中包含的所有数据表的字段名 操作方法:指定字段名,用户数据库表,它可以执行以下查询 --Oracle生成查询包括对应于所有数据表记录语句中指定的字段名 declare mycolumnname VARCHAR(255):='userid';--定义要查询的字段名变量,执行前改动成您要查询的字段名myownername VARCHAR(255):='system';--定义要查询的数据库username变量,执行前改动成您要查询的数据库username

java web验证码生成总结(包括servlet、jsp和struts2实现)(转)

一.使用纯Servlet实现验证码 (1)在web.xml配置: [java] view plaincopy <servlet> <servlet-name>image</servlet-name> <servlet-class>org.test.web.AuthImage</servlet-class> </servlet> <servlet-mapping> <servlet-name>image</

dotnetcharting 生成柱状图,饼图等统计图

DotNetCharting是一个非常棒的.NET图表控件,对中文支持非常好,而且操作方便,开发快速,既有for webform 也有for winform的,而且.net1.1和2.0都有支持.官方地址是http://www.dotnetcharting.com/ 简单使用方法: 1.首先要搞定帮助文档:从官方网站下载解压后把dotnetcharting4.2for1.x目录设置成虚拟目录,.net1.1的环境,然后就可以看帮助示例了.2.把\bin\dotnetCHARTING.dll添加到

Thinkphp+ECharts生成柱状图

1.首先进ECharts官网下载echarts.js 点击下载,结合TP5讲解,主要代码在js里面,更多请到ECharts官网 2.引进echarts.js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>销售柱状图</title> <!-- 引入ECharts文件 --> <script type="text/ja

C++ Builder 的 JSON 解析和生成,包括自带的 JSON 和第三方的 jsoncpp,支持 UNICODE (UTF-8 / UTF-16)

C++ Builder 自带的 JSON 处理,支持 UNICODE (UTF-8 / UTF-16): http://www.cppfans.com/cbknowledge/skills/files/json.asp JSON 解析和生成 - 文件处理 ? JSON 解析方法和规则,读取 JSON 里面特定的值,JSON 类的继承关系 ? JSON 类 TJSONValue|TJSONObject|TJSONPair|TJSONArray|TJSONString|TJSONNumber|TJS

canvas 根据数组生成柱状图

canvas柱状图 var arr = [ { id: 1001, price: 100 }, { id: 1002, price: 150 }, { id: 1003, price: 200 }, { id: 1004, price: 70 }, { id: 1005, price: 300 } ]; var gap = 20; var canvas = document.querySelector("canvas"); var ctx; init(); function init(

devexpress中用ChartControl生成柱状图

在界面中拖入一个ChartControl控件,然后添加一个simplebutton控件.在simplebutton控件的click事件中加入如下代码: private void button1_Click(object sender, EventArgs e)        {            //数据源            chartControl1.DataSource = CreateChartData();            //数据成员            chartCo