zoukankan      html  css  js  c++  java
  • 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


      

        }
    }

  • 相关阅读:
    51nod 1134 最长递增子序列
    51nod 1135 原根
    51nod 1136 欧拉函数
    51nod 1137 矩阵乘法
    51nod 1174 区间中最大的数
    51nod 1079 中国剩余定理
    51nod 1181 质数中的质数(质数筛法)
    伪共享(False Sharing)和缓存行(Cache Line)
    mybatis 批量 操作数据
    java开发中beancopy比较
  • 原文地址:https://www.cnblogs.com/beeone/p/2023110.html
Copyright © 2011-2022 走看看