Zedgraph画线代码


            
//---------------------------------------------------------            
//IsReverse
//X 轴的刻度值从高到低还是从低到高
//MajorUnit
//大刻度步长单位
//MaxAuto
//根据输入数据自动设置刻度最大值
//MinorStepAuto
//是否自动设置小刻度步长
//MinorUnit
//小刻度单位
//MajorUnit
//大刻度步长单位
//Type
//数据显示方式
//IsPenWidthScaled
//图比例变化时候图表上的画笔的粗细是否跟着自动缩放
//-----------------------------------------------------------
//附:在vs中使用ZedGraph控件的一些记录(转)
//
//几个注意点:
//
//图片的保存路径设置:RenderedImagePath 属性中设置,程序对该文件夹应该是有写和修改权限的
//
//图片的输出格式:OutputFormat 属性中设置,Png 的推荐,比较清晰。
//
//Chart
//
//ChartBorder
//图表区域的边框设置
//
//ChartFill
//图表区域的背景填充
//
//Legend
//图表的注释标签显示设置项目,一组数据对应一种颜色的注释
//
//IsHStack
//当有多个显示项的时候设置 Y 轴数据是叠加的还是分开的
//
//Xaxis
//图表区域的 X 轴相关信息设置
//
//AxisColor
//坐标轴颜色
//
//Cross
//坐标的原点,可以设置坐标的偏移程度
//
//CrossAuto
//原点自动设置:True 的话 Cross 的设置就无效了。
//
//FontSpec
//X 轴标题字体相关信息
//
//Angle
//X 轴标题字体显示时候的角度,0为水平 90为垂直
//
//Fill
//X 轴标题字体填充信息
//
//ColorOpacity
//透明度
//
//IsScaled
//设置 X 轴标题字体显示大小是否根据图的比例放大缩小
//
//RangeMax
//填充时候的最大倾斜度(有过渡色,没试过)
//
//RangeMin
//填充时候的最小倾斜度(有过渡色,没试过)
//
//StringAlignment
//X 轴标题字体排列(不清楚,没试过)
//
//IsOmitMag
//是否显示指数幂(10次方,没试过,似乎与 IsUseTenPower 有关系)
//
//IsPreventLabelOverlap
//坐标值显示是否允许重叠,如果False的话,控件会根据坐标值长度自动消除部分坐标值的显示状态
//
//IsShowTitle
//X 轴标题是否显示
//
//IsTicsBetweenLabels
//两个坐标值之间是否自动显示分隔标志
//
//IsUseTenPower
//是否使用10次幂指数
//
//IsZeroLine
//当数据为0时候是否显示(在饼状图显示的时候有用)
//
//IsVisible
//是否显示 X 轴
//
//MajorGrid
//大跨度的 X 轴表格虚线线显示信息
//
//DashOff
//虚线中孔间距
//
//DashOn
//虚线单位长度
//
//MajorTic
//大跨度的 X 轴刻度信息
//
//IsInside
//在 Chart 内部是否显示
//
//IsOutSide
//在 Chart 外部是否显示
//
//IsOpposite
//在对面的轴上是否显示
//
//MinorGrid
//小跨度的 X 轴表格虚线显示信息
//
//MinorTic
//小跨度的 x 轴刻度信息
//
//MinSpace
//刻度和轴之间的距离(没试过)
//
//Scale
//刻度值的一些设定
//
//IsReverse
//X 轴的刻度值从高到低还是从低到高
//
//MajorStep
//大刻度步长
//
//MajorStepAuto
//是否自动设置大刻度步长
//
//MajorUnit
//大刻度步长单位
//
//Max
//刻度最大值
//
//MaxAuto
//根据输入数据自动设置刻度最大值
//
//Min
//刻度最小值
//
//MinAuto
//根据输入数据自动设置刻度最小值
//
//MinGrace
//不清楚,没试过
//
//MinorStep
//小刻度步长
//
//MinorStepAuto
//是否自动设置小刻度步长
//
//MinorUnit
//小刻度单位
//
//Type
//数据显示方式
//
//Liner
//直接现实(自动)
//
//Date
//按日期方式显示
//
//Log
//按指数幂方式显示
//
//Ordinal
//顺序显示
//
//Y2Axis
//第二个 Y 轴坐标信息显示(具体设置看 X 轴)
//
//Yaxis
//第一个 Y 轴坐标信息显示(具体设置看 X 轴)
//
//BarBase
//在生成柱状图的时候设置柱状是基于 X 轴还是其他轴
//
//BarType
//柱状的类型叠加或其他。
//
//IsFontsScaled
//图比例变化时候图表上的文字是否跟着自动缩放
//
//IsIgnoreInitial
//是否忽略初始值
//
//IsIgnoreMissing
//是否忽略缺省值
//
//IsPenWidthScaled
//图比例变化时候图表上的画笔的粗细是否跟着自动缩放
//
//IsShowTitle
//图表标题是否显示
//
//PaneFill
//Pane 的一些填充信息
//
//BaseDimension
//缩放比例基数(可以试试效果)
//
//IsImageMap
//不清楚干吗用的
//
//AxisChaneged
//是否允许自动绘图(没试过,一般都 true,动态绘图)
//
//CacheDuration
//Cache 保存时间0
//
//OutputFormat
//输出格式
//
//RenderedImagePath
//输出路径
//
//RenderMode
//输出模式,不太清楚一般都是 ImageTag,另一个输出的是乱码不是图片。对于图表而言,一般是三种表现形式:柱状图、饼状图和点线图。
////--------------------------------------------------------------------------------------------------
//myPane.YAxis.MajorGrid.IsZeroLine = false;   // Don't display the Y zero line
// (填充数据点)
// myCurve.Symbol.Fill = new Fill(Color.White);

//声明画笔

//GraphPane myPane = zgc.GraphPane;

// 设定坐标组

//PointPairList list1 = new PointPairList();


//zgc.PointValueEvent += new ZedGraphControl.PointValueHandler(MyPointValueHandler); //修改右键 


//先清除
//zedChart.GraphPane.CurveList.Clear(); 
//zedChart.GraphPane.GraphItemList.Clear();  
//重新绘制
//zedChart.AxisChange();
//zedChart.Refresh();
//刷新控件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using ZedGraph;

namespace zedGraphControl
{
    /// <summary>丰元自定义图表控件
    /// 丰元自定义图表控件
    /// </summary>
    public partial class zedGraphControl : UserControl
    {
        /// <summary>构造函数
        /// 构造函数
        /// </summary>
        public zedGraphControl()
        {
            InitializeComponent();
 
          
        }

        /// <summary>
        /// 控件ZedGraphControl 代理
        /// </summary>
        public GraphPane myPane;

        #region ZedGraph属性设置
        /// <summary>属性设置
        /// 属性设置
        /// </summary>
        public virtual void CreateChartAttribute()
        {
            myPane = zedGraphControl1.GraphPane;
            myPane.Title.Text = Title;
            myPane.Title.FontSpec.FontColor = TitleColor;
            myPane.IsPenWidthScaled = IsPenWidthScaled;
            myPane.TitleGap = TitleGrap;
            myPane.Chart.Fill = new Fill(BackFillColor1, BackFillColor2,BackColorFillAngle);
            //myPane.Y2Axis.IsVisible = ISY2Visble;
            //myPane.X2Axis.IsVisible = ISX2Visble;
            myPane.YAxis.Scale.FontSpec.FontColor = Y1ScaleColor;
            myPane.Y2Axis.Scale.FontSpec.FontColor = Y2ScaleColor;
            myPane.XAxis.Scale.FontSpec.FontColor = X1ScaleColor;
            myPane.X2Axis.Scale.FontSpec.FontColor = X2ScaleColor;
            myPane.Legend.IsVisible = IsLegendVisible;
            myPane.XAxis.MajorGrid.IsVisible = IsXGraidVisble;
            myPane.YAxis.MajorGrid.IsVisible = IsYGraidVisble;

            myPane.XAxis.MajorTic.IsOpposite = IsX2MaxScale;
            myPane.XAxis.MinorTic.IsOpposite = IsX2MinScale;
            myPane.X2Axis.MajorTic.IsOpposite = IsX1MaxScale;
            myPane.X2Axis.MinorTic.IsOpposite = IsX1MinScale;

            myPane.YAxis.MajorTic.IsOpposite = IsY2MaxScale;
            myPane.YAxis.MinorTic.IsOpposite = IsY2MinScale;
            myPane.Y2Axis.MajorTic.IsOpposite = IsY1MaxScale;
            myPane.Y2Axis.MinorTic.IsOpposite = IsY1MinScale;

            myPane.XAxis.Scale.FontSpec.Size = X1ScaleSize;

            myPane.X2Axis.Scale.FontSpec.Size = X2ScaleSize;
   
            myPane.YAxis.Title.Text = Y1Title;
            myPane.YAxis.Title.FontSpec.FontColor = Y1TitleColor;
            myPane.Y2Axis.Title.Text = Y2Title;
            myPane.Y2Axis.Title.FontSpec.FontColor = Y2TitleColor;
            myPane.XAxis.Title.Text = X1Title;
            myPane.XAxis.Title.FontSpec.FontColor = X1TitleColor;
            myPane.XAxis.Title.IsVisible = IsX1TitleVisble;
            myPane.X2Axis.Title.IsVisible = IsX2TitleVisble;
            myPane.YAxis.Scale.FontSpec.Size = Y1ScaleSize;
            myPane.Y2Axis.Scale.FontSpec.Size = Y2ScaleSize;
            myPane.YAxis.Title.FontSpec.Size = Y1TitleSize;
            myPane.Y2Axis.Title.FontSpec.Size = Y2TitleSize;
            myPane.Legend.FontSpec.Size = LegendSize;
            myPane.Legend.FontSpec.Family = LegendFamily;
            myPane.Legend.FontSpec.IsUnderline = IsUnderLine;
            myPane.Legend.FontSpec.IsItalic = IsItaLinc;
            myPane.Legend.FontSpec.IsBold = IsBold;
            myPane.Legend.FontSpec.FontColor = LegendColor;
            myPane.Legend.Fill = new Fill(LegendBackGroundColor1, LegendBackGroundColor2,LegendBackGroundColor3);
            myPane.Legend.Gap = LegendGap;
            myPane.Legend.IsHStack = IsHStack;
            myPane.Legend.IsReverse = IsReverse;
            myPane.Legend.IsShowLegendSymbols = IsShowLegendSymbols;
            myPane.Legend.FontSpec.IsDropShadow = IsDropShadow;
            myPane.Legend.FontSpec.DropShadowColor = DropShadowColor;
            myPane.Legend.FontSpec.DropShadowOffset = DropShadowOffset;
            myPane.Legend.Position = (ZedGraph.LegendPos)Position;
            myPane.BarSettings.ClusterScaleWidthAuto = CylinderWidthAuto;
            myPane.BarSettings.ClusterScaleWidth = CylinderWidth;
            zedGraphControl1.Y1Y2 = Y1Y2;
            myPane.Legend.Border.IsVisible =BorderVisible;
        

        }
        private bool _Y1Y2 = false;
        /// <summary>
        /// 显示图表值是y1和x1轴的值或是y1、y2和x1 的值
        /// </summary>
        public bool Y1Y2
        {
            get { return _Y1Y2; }
            set { _Y1Y2 = value; }
        }
        /// <summary>
        /// 显示值针的值
        /// </summary>
        /// <param name="IsShowCursorValues">bool</param>
        public void IsShowCursorValues(bool IsShowCursorValues)
        {

            zedGraphControl1.IsShowCursorValues = IsShowCursorValues;

        }
        /// <summary>
        /// 显示节点的值
        /// </summary>
        /// <param name="IsShowPointValues"></param>
        public void IsShowPointValues(bool IsShowPointValues)
        {

            zedGraphControl1.IsShowPointValues = IsShowPointValues;

        }
        /// <summary>
        /// 隐藏或显示菜单
        /// </summary>
        /// <param name="IsMenu">bool</param>
        public void IsShowContextMenu(bool IsMenu)
        {
            zedGraphControl1.IsEnableHZoom = IsMenu;
            zedGraphControl1.IsEnableVZoom = IsMenu;
            zedGraphControl1.IsShowContextMenu = IsMenu;
        }
        #endregion
        #region 设置X轴的刻度值的大小
        //设置X轴的刻度值的大小
        private float x1scalesize = 8;
        /// <summary>
        /// 设置X轴的刻度值的大小
        /// </summary>
        public float X1ScaleSize
        {
            get { return x1scalesize; }
            set { x1scalesize = value; }
        }
        #endregion


        #region 设置X2轴的刻度值的大小
        //设置X2轴的刻度值的大小
        private float x2scalesize = 8;
        /// <summary>
        /// 设置X2轴的刻度值的大小
        /// </summary>
        public float X2ScaleSize
        {
            get { return x2scalesize; }
            set { x2scalesize = value; }
        }
        #endregion


        #region   图表标题
        //图表标题
        private string title = "丰元科技";
        /// <summary>
        /// 图表标题
        /// </summary>
        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        #endregion
        #region 图表的背景填充颜色
        //图表的背景填充颜色
        private Color backFillColor1 = Color.White;
        /// <summary>
        /// 图表的背景填充颜色
        /// </summary>

        public Color BackFillColor1
        {
            get { return backFillColor1; }
            set { backFillColor1 = value; }
        }
        #endregion
        #region 图表的背景填充颜色
        //图表的背景填充颜色
        private Color backFillColor2 = Color.FromArgb(255, 255, 166);
        /// <summary>
        /// 图表的背景填充颜色
        /// </summary>
        public Color BackFillColor2
        {
            get { return backFillColor2; }
            set { backFillColor2 = value; }
        }
        #endregion
        #region 图表背景填充颜色角度
        //图表背景填充颜色角度
        private float backcolorFillAngle = 45f;
        /// <summary>
        /// 图表背景填充颜色角度
        /// </summary>
        public float BackColorFillAngle
        {
            get { return backcolorFillAngle; }
            set { backcolorFillAngle = value; }
        }
        #endregion
      
        #region 图表的刻度边框加粗
        //图表的刻度边框加粗
        private bool isPenWidthScaled = false;
        /// <summary>
        /// 图表的刻度边框加粗
        /// </summary>
        public bool IsPenWidthScaled
        {
            get { return isPenWidthScaled; }
            set { isPenWidthScaled = value; }

        }
        #endregion
        #region 图表标题与X2轴的距离
        //图表标题与X2轴的距离
        private float titleGap = 1;
        /// <summary>
        /// 图表标题与X2轴的距离
        /// </summary>
        public float TitleGrap
        {
            get { return titleGap; }
            set { titleGap = value; }
        }
        #endregion
      
        #region 是否显示Y2轴
        //是否显示Y2轴
        private bool isY2visble = false;
        /// <summary>
        /// 是否显示Y2轴
        /// </summary>
        public bool ISY2Visble
        {
            get { return isY2visble; }
            set { isY2visble = value; }
        }
        #endregion
        #region 是否显示X2轴
        //是否显示X2轴
        private bool isx2visble = false;
        /// <summary>
        /// 是否显示X2轴
        /// </summary>
        public bool ISX2Visble
        {
            get { return isx2visble; }
            set { isx2visble = value; }
        }
        #endregion
        #region 是否显示X1轴的标题
        //是否显示X1轴的标题
        private bool isX1TitleVisble = false;
        /// <summary>
        /// 是否显示X1轴的标题
        /// </summary>
        public bool IsX1TitleVisble
        {
            get { return isX1TitleVisble; }
            set { isX1TitleVisble = value; }
        }
        #endregion
        #region 是否显示X2轴的标题
        //是否显示X2轴的标题
        private bool isX2TitleVisble = false;
        /// <summary>
        /// 是否显示X2轴的标题
        /// </summary>
        public bool IsX2TitleVisble
        {
            get { return isX2TitleVisble; }
            set { isX2TitleVisble = value; }
        }
        #endregion
        #region 设置Y1轴的刻度值的颜色
        private Color Y1scalecolor = Color.Black;
        /// <summary>
        /// 设置Y1轴的刻度值的颜色
        /// </summary>
        public Color Y1ScaleColor
        {
            get { return Y1scalecolor; }
            set { Y1scalecolor = value; }
        }
        #endregion
        #region 设置Y2轴的刻度值颜色
        private Color Y2scalecolor = Color.Black;
        /// <summary>
        /// 设置Y2轴的刻度值颜色
        /// </summary>
        public Color Y2ScaleColor
        {
            get { return Y2scalecolor; }
            set { Y2scalecolor = value; }
        }
        #endregion
        #region 设置X1轴的刻度值颜色
        private Color X1scalecolor = Color.Black;
        /// <summary>
        /// 设置X1轴的刻度值颜色  
        /// </summary>
        public Color X1ScaleColor
        {
            get { return X1scalecolor; }
            set { X1scalecolor = value; }
        }
        #endregion
        #region 设置X2轴的刻度值颜色
        private Color X2scalecolor = Color.Black;
        /// <summary>
        /// 设置X2轴的刻度值颜色
        /// </summary>
        public Color X2ScaleColor
        {
            get { return X2scalecolor; }
            set { X2scalecolor = value; }
        }
        #endregion
        #region 是否显示图例
        //是否显示图例
        private bool Islegendvisible = true;
        /// <summary> 是否显示图例
        ///
        /// </summary>
        public bool IsLegendVisible
        {
            get { return Islegendvisible; }
            set { Islegendvisible = value; }
        }

        #endregion
        #region 显示X轴网格
        //显示X轴网格
        private bool IsXgridvisible = true;
        /// <summary>
        /// 显示X轴网格
        /// </summary>
        public bool IsXGraidVisble
        {
            get { return IsXgridvisible; }
            set { IsXgridvisible = value; }
        }

        #endregion
        #region 显示Y轴网格
        //显示Y轴网格
        private bool IsYgridvisible = true;
        /// <summary>
        /// 显示Y轴网格
        /// </summary>
        public bool IsYGraidVisble
        {
            get { return IsYgridvisible; }
            set { IsYgridvisible = value; }
        }
        #endregion
        #region 图表标题颜色
        //图表标题颜色
        private Color titlecolor = Color.Black;
        /// <summary>
        /// 图表标题颜色
        /// </summary>
        public Color TitleColor
        {
            get { return titlecolor; }
            set { titlecolor = value; }
        }
        #endregion
        #region Y1轴是否显示小刻度
        //Y1轴是否显示小刻度
        private bool isy1minscale = false;
        /// <summary> Y1轴是否显示小刻度
        /// 
        /// </summary>
        public bool IsY1MinScale
        {
            get { return isy1minscale; }
            set { isy1minscale = value; }
        }
        #endregion
        #region Y2轴是否显示小刻度
        //Y2轴是否显示小刻度
        private bool isy2minscale = false;
        /// <summary> Y2轴是否显示小刻度
        /// 
        /// </summary>
        public bool IsY2MinScale
        {
            get { return isy2minscale; }
            set { isy2minscale = value; }
        }
        #endregion
        #region Y1轴是否显示大刻度
        //Y1轴是否显示大刻度
        private bool isy1maxscale = true;
        /// <summary>
        /// Y1轴是否显示大刻度
        /// </summary>
        public bool IsY1MaxScale
        {
            get { return isy1maxscale; }
            set { isy1maxscale = value; }
        }
        #endregion
        #region Y2轴是否显示大刻度
        //Y2轴是否显示大刻度
        private bool isy2maxscale = true;
        /// <summary> Y2轴是否显示大刻度
        /// 
        /// </summary>
        public bool IsY2MaxScale
        {
            get { return isy2maxscale; }
            set { isy2maxscale = value; }
        }
        #endregion
        #region X1轴是否显示小刻度
        //X1轴是否显示小刻度
        private bool isx1minscale = false;
        /// <summary> X1轴是否显示小刻度
        /// 
        /// </summary>
        public bool IsX1MinScale
        {
            get { return isx1minscale; }
            set { isx1minscale = value; }
        }
        #endregion
        #region X2轴是否显示小刻度
        //X2轴是否显示小刻度
        private bool isx2minscale = false;
        /// <summary> X2轴是否显示小刻度
        /// 
        /// </summary>
        public bool IsX2MinScale
        {
            get { return isx2minscale; }
            set { isx2minscale = value; }
        }
        #endregion
        #region X1轴是否显示大刻度
        //X1轴是否显示大刻度
        private bool isx1maxscale = true;
        /// <summary> X1轴是否显示大刻度
        ///
        /// </summary>
        public bool IsX1MaxScale
        {
            get { return isx1maxscale; }
            set { isx1maxscale = value; }
        }
        #endregion
        #region X2轴是否显示大刻度
        //X2轴是否显示大刻度
        private bool isx2maxscale = true;
        /// <summary> X2轴是否显示大刻度
        /// 
        /// </summary>
        public bool IsX2MaxScale
        {
            get { return isx2maxscale; }
            set { isx2maxscale = value; }
        }
        #endregion
      
        #region 设置Y1轴的标题
        //设置Y1轴的标题
        private string y1Title = "Y轴";
        /// <summary>
        /// 设置Y1轴的标题
        /// </summary>
        public string Y1Title
        {
            get { return y1Title; }
            set { y1Title = value; }
        }
        #endregion
        #region 设置Y2轴的标题
        //设置Y2轴的标题
        private string y2Title = "Y2轴";
        /// <summary>
        /// 设置Y2轴的标题
        /// </summary>
        public string Y2Title
        {
            get { return y2Title; }
            set { y2Title = value; }
        }
        #endregion
        #region 设置Y1轴的标题颜色
        //设置Y1轴的标题颜色
        private Color y1TitleColor = Color.Black;
        /// <summary>
        /// 设置Y1轴的标题颜色
        /// </summary>
        public Color Y1TitleColor
        {
            get { return y1TitleColor; }
            set { y1TitleColor = value; }
        }
        #endregion
        #region 设置Y2轴的标题颜色
        //设置Y2轴的标题颜色
        private Color y2TitleColor = Color.Black;
        /// <summary>
        /// 设置Y2轴的标题颜色
        /// </summary>
        public Color Y2TitleColor
        {
            get { return y2TitleColor; }
            set { y2TitleColor = value; }
        }
        #endregion
        #region 设置X1轴的标题
        //设置X1轴的标题
        private string x1Title = "X轴";
        /// <summary>
        /// 设置X1轴的标题
        /// </summary>
        public string X1Title
        {
            get { return x1Title; }
            set { x1Title = value; }
        }
        #endregion
        #region 设置X1轴的标题颜色
        //设置X1轴的标题颜色
        private Color x1TitleColor = Color.Black;
        /// <summary>
        /// 设置X1轴的标题颜色
        /// </summary>
        public Color X1TitleColor
        {
            get { return x1TitleColor; }
            set { x1TitleColor = value; }
        }
        #endregion
        #region 设置X1轴的值倾斜度
        //设置X1轴的值倾斜度
        private float x1scaleAngle = 70f;
        /// <summary>
        /// 设置X1轴的值倾斜度
        /// </summary>
        public float X1ScaleAngle
        {
            get { return x1scaleAngle; }
            set { x1scaleAngle = value; }
        }
        #endregion
        #region 设置X1轴的标题大小
        //设置X1轴的标题大小
        private float x1titlesize = 8;
        /// <summary>
        /// 设置X1轴的标题大小
        /// </summary>
        public float X1TitleSize
        {
            get { return x1titlesize; }
            set { x1titlesize = value; }
        }
        #endregion
        #region 设置Y1轴刻度值字体的大小
        //设置Y1轴刻度值字体的大小
        private float y1ScaleSize = 8;
        /// <summary>
        /// 设置Y1轴刻度值字体的大小
        /// </summary>
        public float Y1ScaleSize
        {
            get { return y1ScaleSize; }
            set { y1ScaleSize = value; }
        }
        #endregion
        #region 设置Y2轴刻度值字体的大小
        //设置Y2轴刻度值字体的大小
        private float y2ScaleSize = 8;
        /// <summary>
        /// 设置Y2轴刻度值字体的大小
        /// </summary>
        public float Y2ScaleSize
        {
            get { return y2ScaleSize; }
            set { y2ScaleSize = value; }
        }
        #endregion
        #region 设置Y3轴刻度值字体的大小
        //设置Y3轴刻度值字体的大小
        private float y3ScaleSize = 8;
        /// <summary>
        /// 设置Y3轴刻度值字体的大小
        /// </summary>
        public float Y3ScaleSize
        {
            get { return y3ScaleSize; }
            set { y3ScaleSize = value; }
        }
        #endregion
        #region 设置Y1轴标题字体大小
        //设置Y1轴标题字体大小
        private float y1titleSize = 10;
        /// <summary>
        /// 设置Y1轴标题字体大小
        /// </summary>
        public float Y1TitleSize
        {
            get { return y1titleSize; }
            set { y1titleSize = value; }
        }
        #endregion
        #region 设置Y2轴标题字体大小
        //设置Y2轴标题字体大小
        private float y2titleSize = 10;
        /// <summary>
        /// 设置Y2轴标题字体大小
        /// </summary>
        public float Y2TitleSize
        {
            get { return y2titleSize; }
            set { y2titleSize = value; }
        }

        #endregion
        #region 设置Y3轴标题字体大小
        //设置Y3轴标题字体大小
        private float y3titleSize = 10;
        /// <summary>
        /// 设置Y3轴标题字体大小
        /// </summary>
        public float Y3TitleSize
        {
            get { return y3titleSize; }
            set { y3titleSize = value; }
        }
        #endregion
        #region 设置圆柱的宽度
        //设置圆柱的宽度
        private double cylinderWidth = 0.5;
        /// <summary>
        /// 设置圆柱的宽度
        /// </summary>
        public double CylinderWidth
        {
            get { return cylinderWidth; }
            set { cylinderWidth = value; }
        }
        #endregion
        #region 设置圆柱宽度是否是自动更改
        //设置圆柱宽度是否是自动更改
        private bool cylinderwidthauto = false;
        /// <summary>
        /// 设置圆柱宽度是否是自动更改
        /// </summary>
        public bool CylinderWidthAuto
        {
            get { return cylinderwidthauto; }
            set { cylinderwidthauto = value; }
        }
        #endregion
        //以下是图例的属性设置
        #region 设置图例的字体大小
        //设置图例的字体大小
        private float legendsize = 10;
        /// <summary>
        /// 设置图例的字体大小
        /// </summary>
        public float LegendSize
        {
            get { return legendsize; }
            set { legendsize = value; }
        }

        #endregion
        #region 设置图例字体
        //设置图例字体
        private string legendfamily = "宋体";
        /// <summary>
        /// 设置图例字体
        /// </summary>
        public string LegendFamily
        {
            get { return legendfamily; }
            set { legendfamily = value; }
        }
        #endregion
        #region 图例字体是否带下划线
        //图例字体是否带下划线
        private bool isunderline = false;
        /// <summary>
        /// 图例字体是否带下划线
        /// </summary>
        public bool IsUnderLine
        {
            get { return isunderline; }
            set { isunderline = value; }
        }


        #endregion
        #region 图例字体是否倾斜
        //图例字体是否倾斜
        private bool isitalinc = false;
        /// <summary>
        /// 图例字体是否倾斜
        /// </summary>
        public bool IsItaLinc
        {
            get { return isitalinc; }
            set { isitalinc = value; }
        }


        #endregion
        #region 图例字体是否加粗
        //图例字体是否加粗
        private bool isbold = false;
        /// <summary>
        /// 图例字体是否加粗
        /// </summary>
        public bool IsBold
        {
            get { return isbold; }
            set { isbold = value; }
        }


        #endregion
        #region 图例字体颜色
        //图例字体颜色
        private Color legendcolor = Color.Black;
        /// <summary>
        /// 图例字体颜色
        /// </summary>
        public Color LegendColor
        {
            get { return legendcolor; }
            set { legendcolor = value; }
        }


        #endregion
        #region 图例背景填充颜色
        //图例背景填充颜色
        private Color legendbackgroundcolor1 = Color.White;
        /// <summary>
        /// 图例背景填充颜色
        /// </summary>
        public Color LegendBackGroundColor1
        {
            get { return legendbackgroundcolor1; }
            set { legendbackgroundcolor1 = value; }
        }


        #endregion
        #region 图例背景填充颜色
        //图例背景填充颜色
        private Color legendbackgroundcolor2 = Color.White;
        /// <summary>
        /// 图例背景填充颜色
        /// </summary>
        public Color LegendBackGroundColor2
        {
            get { return legendbackgroundcolor2; }
            set { legendbackgroundcolor2 = value; }
        }


        #endregion
        #region 图例背景填充颜色
        //图例背景填充颜色
        private Color legendbackgroundcolor3 = Color.White;
        /// <summary>
        /// 图例背景填充颜色
        /// </summary>
        public Color LegendBackGroundColor3
        {
            get { return legendbackgroundcolor3; }
            set { legendbackgroundcolor3 = value; }
        }


        #endregion
        #region 图例与图表之间的距离
        //图例与图表之间的距离
        private float legendGap = 0.5f;
        /// <summary>
        /// 图例与图表之间的距离
        /// </summary>
        public float LegendGap
        {
            get { return legendGap; }
            set { legendGap = value; }
        }


        #endregion
        #region 图例是否以水平的形式出现
        //图例是否以水平的形式出现
        private bool ishstack = true;
        /// <summary>
        /// 图例是否以水平的形式出现
        /// </summary>
        public bool IsHStack
        {
            get { return ishstack; }
            set { ishstack = value; }
        }


        #endregion
        #region 图例是否降序排列
        //图例是否降序排列
        private bool isreverse = false;
        /// <summary>
        /// 图例是否降序排列
        /// </summary>
        public bool IsReverse
        {
            get { return isreverse; }
            set { isreverse = value; }
        }


        #endregion
        #region 图例是否展示样本
        //图例是否展示样本
        private bool isShowLegendSymbols = true;
        /// <summary>
        /// 图例是否展示样本
        /// </summary>
        public bool IsShowLegendSymbols
        {
            get { return isShowLegendSymbols; }
            set { isShowLegendSymbols = value; }
        }


        #endregion
        #region 图例是否显示阴影
        //图例是否显示阴影
        private bool isDropShadow = false;
        /// <summary>
        /// 图例是否显示阴影
        /// </summary>
        public bool IsDropShadow
        {
            get { return isDropShadow; }
            set { isDropShadow = value; }
        }


        #endregion
        #region 图例阴影颜色
        //图例阴影颜色
        private Color dropShadowColor = Color.Red;
        /// <summary>
        /// 图例阴影颜色
        /// </summary>
        public Color DropShadowColor
        {
            get { return dropShadowColor; }
            set { dropShadowColor = value; }
        }


        #endregion
        #region 图例阴影填充位置
        //图例阴影填充位置
        private float dropShadowOffset = 0.009f;
        /// <summary>
        /// 图例阴影填充位置
        /// </summary>
        public float DropShadowOffset
        {
            get { return dropShadowOffset; }
            set { dropShadowOffset = value; }
        }


        #endregion
        #region 是否显示图例边框
        private bool borervisible = false;
        /// <summary>
        /// 是否显示图例边框
        /// </summary>
        public bool BorderVisible
        {
            get { return borervisible; }
            set { borervisible = value; }
        }
        #endregion
        #region 图例显示的位置
        //图例显示的位置
        private LegendPos legendpos = LegendPos.Top;
        /// <summary>
        /// 图例显示的位置
        /// </summary>
        public LegendPos Position
        {
            get { return legendpos; }
            set { legendpos = value; }
        }

        #endregion
        private void zedGraphControl1_Load(object sender, EventArgs e)
        {

            CreateChartAttribute();
        }
        #region 设置LineItem的SymbolType的类型
        // 设置LineItem的SymbolType的类型
        private SymbolType st = SymbolType.Circle;
        /// <summary>
        /// 设置LineItem的SymbolType的类型
        /// </summary>
        public SymbolType Type
        {
            get { return st; }
            set { st = value; }
        }
        #endregion
        #region 设置LineItem的SymbolTypeSize的大小
        // 设置LineItem的SymbolTypeSized的大小
        private float stsize = 2f;
        /// <summary>
        /// 设置LineItem的SymbolTypeSized的大小
        /// </summary>
        public float SymbolTypeSize
        {
            get { return stsize; }
            set { stsize = value; }
        }
        #endregion
        #region 设置LineItem的LineSize的大小
        // 设置LineItem的LineSize的大小
        private float linesize = 2f;
        /// <summary>
        /// 设置LineItem的LineSize的大小
        /// </summary>
        public float LineSize
        {
            get { return linesize; }
            set { linesize = value; }
        }
        #endregion
        #region 设置LineItem线条是否是圆滑的
        //设置LineItem线条是否是圆滑的
        private bool issmooth = true;
        /// <summary>
        /// 设置LineItem线条是否是圆滑的
        /// </summary>
        public bool IsSmooth
        {
            get { return issmooth; }
            set { issmooth = value; }
        }
        #endregion
      
        /// <summary>
        /// 设置X轴显示的时间是否为为长格式
        /// </summary>
        private bool longtime = false;
        /// <summary>
        /// 设置X轴显示的时间是否为为长格式
        /// </summary>
        public bool LongTime
        {
            get { return longtime; }
            set { longtime = value; }
        }
        /// <summary>
        /// 设置X轴的步长
        /// </summary>
        private double step_x = 0;
        /// <summary>
        /// 设置X轴的步长
        /// </summary>
        public double Step_X
        {
            get { return step_x; }
            set
            {
                step_x = value;
            }
        }
       
       
       
       
       
       
       
       
       
       
       
   
        #region 画曲线 参数dt 中必须有2个字段 时间、数值.
        /// <summary>
        /// 画曲线 参数dt 中必须有2个字段 时间、数值.
        /// </summary>
        /// <param name="dt">二维表</param>
        /// <param name="columndatetime">列名为的类型为datetime类型</param>
        /// <param name="columnvalue">列的值必须是数值</param>
        /// <param name="dtbig">设置X轴的最大时间</param>
        /// <param name="dtsmall">设置X轴的最小时间</param>
        /// <param name="LineItemName">曲线名称</param>
        /// <param name="ItemBelongY">曲线所属于哪个Y轴(其值已经值定 1,2)</param>
        /// <param name="LineColor">曲线颜色</param>

        public void DarwLineItem(DataTable dt, string columndatetime, string columnvalue, DateTime dtbig, DateTime dtsmall, string LineItemName, int ItemBelongY, Color LineColor)
        {
            zedGraphControl1_Load(null, null);
            LineItem li;
            double ybig = 0;
            double ysmall = 0;
            double yy =0;
           
            PointPairList ppl = new PointPairList();//把坐标点放到这里
            if (dt.Rows[0][columnvalue] != DBNull.Value)
            {
                ybig = double.Parse(dt.Rows[0][columnvalue].ToString());
            }
            if (dt.Rows[0][columnvalue] != DBNull.Value)
            {
                ysmall = double.Parse(dt.Rows[0][columnvalue].ToString());
            }
            if(dt.Rows.Count>=2)
            foreach(DataRow dr in dt.Rows)
            {
             if(dr[columnvalue]!=DBNull.Value && dr[columnvalue]>=0)
             {
              YY =  double.Parse(dr[columnvalue].ToString());
             }
             esle
             {
              MessageBox.show("数据库中有非法值"); 
             }
            }
           
            if(YY > 0)
            {
              foreach (DataRow dr in dt.Rows)
              {
                  if (dr[columnvalue] != DBNull.Value)
                  {
                      if (ybig < double.Parse(dr[columnvalue].ToString()))
                      {
                          ybig = double.Parse(dr[columnvalue].ToString());
                      }
                      if (ysmall > double.Parse(dr[columnvalue].ToString()))
                      {
                          ysmall = double.Parse(dr[columnvalue].ToString());
                      }
  
                      XDate xdate = new XDate(Convert.ToDateTime(dr[columndatetime]));
                      ppl.Add(xdate, double.Parse(dr[columnvalue].ToString()));
                  }
              }
          }
            if (ybig == ysmall)
            {
             if(Ysmall>1)
             {
                ysmall = ysmall-(ysmall-1);   //原代码 ysmall = ysmall-1   2011-04-05 hetao改
                ybig = ybig + 5;   //源代码 ybig = ybig+1   2011-04-05 hetao改
              }
              else
              {
               ysmall = ysmmll;
               Ybig=Ygig+5;
              }
            }
            ybig = ybig / 5 + ybig;
           
           //添加曲线


            li = myPane.AddCurve(LineItemName, ppl, LineColor, Type);
            li.Symbol.Fill = new Fill(LineColor);  //填充数据点
            li.Symbol.Size = SymbolTypeSize;
            if ( LongTime == true)
            {
                myPane.XAxis.Scale.Format = "yyyy-MM-dd HH:mm ";
            }
            else
            {
                myPane.XAxis.Scale.Format = "yyyy-MM-dd";
            }
       
             XDate x = new XDate(dtsmall);
             myPane.XAxis.Scale.Min = x;
             myPane.XAxis.Scale.BaseTic = x;  //指明第一个主刻度标签标记的位置

             x = new XDate(dtbig);
             myPane.XAxis.Scale.Max = x;        //X 轴上的最大刻度
             myPane.XAxis.Type = AxisType.Date; //数据显示方式    Date按日期方式显示


            
             myPane.XAxis.Scale.MajorStepAuto = false;//是否自动设置大刻度步长
             if (Step_X != 0)
             {
                 myPane.XAxis.Scale.MajorStep = Step_X;
                 myPane.XAxis.Scale.MinorStep = Step_X;
             }
            

        
            li.IsOverrideOrdinal = true;//以x轴上的刻度为准,而不是以X轴上的刻度为0的位置开始划  (ture 是从X轴由下向上画,False反之)    
            li.Line.IsSmooth = IsSmooth;
            li.Line.Width = LineSize;
            if (ItemBelongY == 2)
            {
                li.IsY2Axis = true; 把这个曲线对应Y2轴
                ISY2Visble = true;
                myPane.Y2Axis.IsVisible = ISY2Visble;
                if (ybig == 0 && ysmall == 0)
                {
                    myPane.Y2Axis.Scale.Max = ybig+1;
                    myPane.Y2Axis.Scale.Min = ysmall;
                    myPane.YAxis.Scale.BaseTic = 0;


                }
                else
                {
                    myPane.Y2Axis.Scale.Max = ybig;
                    myPane.Y2Axis.Scale.Min = ysmall;
                    myPane.YAxis.Scale.BaseTic = 0;//第一个主刻度从哪里开始

                }
            }
            else if (ItemBelongY == 1)
            {
                li.IsYAxis = true; 把这个曲线对应Y2轴
                ISYVisble = true;
                myPane.YAxis.IsVisible = ISYVisble;
                if(ybig ==0 && ysmall==0)
                {
                   myPane.YAxis.Scale.Max = ybig+1;
                   myPane.YAxis.Scale.Min = ysmall;
                   myPane.YAxis.Scale.BaseTic = 0;
                }else
                {
                  myPane.YAxis.Scale.Max = ybig;
                   myPane.YAxis.Scale.Min = ysmall;
                   myPane.YAxis.Scale.BaseTic = 0; 
                }

            }
            myPane.XAxis.Scale.FontSpec.Angle = X1ScaleAngle;
            myPane.XAxis.Title.FontSpec.Size = X1TitleSize;
      
            myPane.AxisChange();// 在数据变化时绘制图形

            this.zedGraphControl1.Refresh();
          
        }
        #endregion
       
       
       
       
       
       
       
       

        #region 清空图表中所有线图和柱状图
        /// <summary>
        /// 清空图表中所有线图和柱状图
        /// </summary>
        public void LineItemList()
        {
            myPane.CurveList.Clear();
        }
        #endregion
 


        #region  画线段 X轴时间 ,自动获取Y轴的最大值和最小值
        /// <summary>
        ///  画线段 X轴时间,自动获取X轴的大小值,自动获取Y轴的最大值和最小值     
        /// </summary>
        /// <param name="dt">二维表</param>     
        /// <param name="columnXname">二维表中要显示X轴上数据的列名</param>
        /// <param name="columnYname">二维表中要显示Y轴上数据的列名</param>      
        /// <param name="ItemBelongY">依赖于哪个Y轴</param>
        /// <param name="LineName">曲线的名字</param>
        /// <param name="LineColor">曲线颜色</param>
        public void CreateChartLineItem(DataTable dt, string columnXname, string columnYname, int ItemBelongY, string LineName, Color LineColor)
        {
            zedGraphControl1_Load(null, null);
            LineItem li;
            PointPairList ppl = new PointPairList();
            double ybig = 0;
            double ysmall = 0;
            double temp = 0;
            XDate xdate;
          
            DateTime xmax;
            DateTime xmin;
            if (dt.Rows[0][columnYname] != DBNull.Value)
            {
                ybig = double.Parse(dt.Rows[0][columnYname].ToString());
                ysmall = double.Parse(dt.Rows[0][columnYname].ToString());
                temp = ybig;
            
                xmax = DateTime.Parse(dt.Rows[0][columnXname].ToString());
                xmin = DateTime.Parse(dt.Rows[0][columnXname].ToString());
            }
            else { MessageBox.Show("没有您要的数据记录!"); return; }
            foreach (DataRow dr in dt.Rows)
            {

                if (dr[columnYname] != DBNull.Value)
                {

                    if (ybig < double.Parse(dr[columnYname].ToString()))
                    {
                        ybig = double.Parse(dr[columnYname].ToString());
                    }
                    if (ysmall >= double.Parse(dr[columnYname].ToString()))
                    {
                        ysmall = double.Parse(dr[columnYname].ToString());
                    }
                    if (xmax < DateTime.Parse(dr[columnXname].ToString()))
                    {
                        xmax = DateTime.Parse(dr[columnXname].ToString());
                    }
                    if (xmin >= DateTime.Parse(dr[columnXname].ToString()))
                    {
                        xmin = DateTime.Parse(dr[columnXname].ToString());
                    }
                    if (temp == double.Parse(dr[columnYname].ToString()))
                    {
                        xdate = new XDate(DateTime.Parse((dr[columnXname].ToString())));
                        ppl.Add(xdate, double.Parse(dr[columnYname].ToString()));
                    }
                    else
                    {

                        { li = myPane.AddCurve("", ppl, LineColor, Type); }
                        li.Symbol.Fill = new Fill(LineColor);
                        li.Symbol.Size = SymbolTypeSize;
                        li.IsOverrideOrdinal = true;//以x轴上的刻度为准,而不是以X轴上的刻度为0的位置开始划      
                        li.Line.IsSmooth = IsSmooth;
                        li.Line.Width = LineSize;
                        if (ItemBelongY == 2)
                        {
                            li.IsY2Axis = true;
                            ISY2Visble = true;
                            myPane.Y2Axis.IsVisible = ISY2Visble;

                            myPane.Y2Axis.Scale.Max = ybig + 1;
                            if (ysmall != 0)
                            {
                                myPane.Y2Axis.Scale.Min = ysmall - 1;
                            }
                            else { myPane.Y2Axis.Scale.Min = ysmall; }

                        }
                        else if (ItemBelongY == 1)
                        {
                            myPane.YAxis.Scale.Max = ybig + 1;
                            if (ysmall != 0)
                            {
                                myPane.YAxis.Scale.Min = ysmall - 1;
                            }
                            else
                            {
                                myPane.YAxis.Scale.Min = ysmall;
                            }
                        }
                        ppl = new PointPairList();
                        xdate = new XDate(Convert.ToDateTime(dr[columnXname]));
                        ppl.Add(xdate, double.Parse(dr[columnYname].ToString()));
                        temp = double.Parse(dr[columnYname].ToString());

                    }
                }


            }
            li = myPane.AddCurve(LineName, ppl, LineColor, Type);
            li.Symbol.Fill = new Fill(LineColor);
            li.Symbol.Size = SymbolTypeSize;
            li.IsOverrideOrdinal = true;//以x轴上的刻度为准,而不是以X轴上的刻度为0的位置开始划      
            li.Line.IsSmooth = IsSmooth;
            li.Line.Width = LineSize;
            if (LongTime == true)
            {
                myPane.XAxis.Scale.Format = "yyyy-MM-dd HH:mm ";
            }
            else
            {
                myPane.XAxis.Scale.Format = "yyyy-MM-dd";
            }

            XDate x = new XDate(xmin);
            myPane.XAxis.Scale.Min = x;
            myPane.XAxis.Scale.BaseTic = x;
            x = new XDate(xmax);
            myPane.XAxis.Scale.Max = x;
            myPane.XAxis.Type = AxisType.Date;
            myPane.XAxis.Scale.MajorStepAuto = false;
            if (Step_X != 0)
            {
                myPane.XAxis.Scale.MajorStep = Step_X;
                myPane.XAxis.Scale.MinorStep = Step_X;
            }

            if (ybig == ysmall)
            {
                ysmall = ysmall - 1;
                ybig = ybig + 1;
            }

            myPane.XAxis.Scale.FontSpec.Angle = X1ScaleAngle;
            myPane.XAxis.Title.FontSpec.Size = X1TitleSize;
            myPane.AxisChange();
            this.zedGraphControl1.Refresh();
        }
        #endregion


        #region 枚举信息操作
        public enum LegendPos
        {
         
            Top,
       
            Left,
     
            Right,
    
            Bottom,
        
            InsideTopLeft,
        
            InsideTopRight,
       
            InsideBotLeft,
       
            InsideBotRight,
       
            Float,
       
            TopCenter,
       
            BottomCenter,
      
            TopFlushLeft,
          
            BottomFlushLeft

        }

        #endregion


  

    }
}

你可能感兴趣的:(Graph)