码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2017-06-03 14:05:13      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:hit   rectangle   lin   and   values   sum   point   names   open   

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;
技术分享        }
技术分享    }
技术分享}

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

标签:hit   rectangle   lin   and   values   sum   point   names   open   

原文地址:http://www.cnblogs.com/zcm123/p/6936897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!