当前位置: 移动技术网 > IT编程>开发语言>c# > Winform中实现ZedGraph新增自定义Y轴上下限、颜色、标题功能

Winform中实现ZedGraph新增自定义Y轴上下限、颜色、标题功能

2019年09月03日  | 移动技术网IT编程  | 我要评论

场景

winform中实现zedgraph的多条y轴(附源码下载):

https://blog.csdn.net/badao_liumang_qizhi/article/details/100132245

在上面实现显示多条自定义y轴的效果上,改进实现自定义新增y轴功能。

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

示例代码下载

实现

主窗体添加按钮,点击之后弹出y轴设置界面。

 private void button12_click(object sender, eventargs e)
        {
            addy = new addy();
            addy.show();

        }

 

其中addy是对应要弹窗显示的窗体对象,其设计如下

 

 

此窗体有两个edittext,用来存储y轴的上下限,然后使用radiogroup用来设置标题的选择,然后使用

coloreditpicker进行颜色的选择,以上的控件都是使用的devexpress的控件。

在点击新增按钮时将控件上的所有属性赋值给声明的yaxis对象。

private void button1_click(object sender, eventargs e)
        {
            yaxis y = new yaxis();
            //标题
            y.title.text = this.radiogroup1.text;
            //颜色
            y.color = this.colorpickedit1.color;
            //下限
            y.scale.min = double.parse(this.textedit1.text);
            //上限
            y.scale.max = double.parse(this.textedit2.text);

            if (setyaxisevent != null)
            {
                setyaxisevent(y);
            }
           
        }

 

这里使用的是事件与委托进行跨窗体传递对象。

在addy当前页面代码中

//委托的定义
public delegate void setyaxisdelegete(yaxis s);
//事件声明
public static event setyaxisdelegete setyaxisevent;

 

然后在主页面form1中的初始化方法中进行委托的订阅

//添加y轴
addy.setyaxisevent += new addy.setyaxisdelegete(addyaxis);

 

此时传递了addyaxis方法名

方法代码:

public void addyaxis(yaxis y)
        {
            //如果是新增第二条y轴
            if (ycount == 1)
            {
                //第二条y轴标题
                mypane.y2axis.title.text = y.title.text.tostring();
              
                //第二条y轴下限
                mypane.y2axis.scale.min = y.scale.min;
                //第二条y轴上限
                mypane.y2axis.scale.max = y.scale.max;
                //设置颜色
                mypane.y2axis.color = y.color;
                //设置刻度线字体颜色
                mypane.y2axis.scale.fontspec.fontcolor = y.color;
                //设置标题字体颜色
                mypane.y2axis.title.fontspec.fontcolor = y.color;
                //让第二条y轴显示
                mypane.y2axis.isvisible = true;
                ycount++;
                //关闭窗口
                addy.close();
                zedgraphcontrol1.invalidate();
                
            }
            //否则就是新增第三条及以上
            else
            {
                //int yindex = mypane.yaxislist.count+1;
                // 创建第yindex条y轴
                yaxis yaxisnew = new yaxis(y.title.text.tostring());
                yaxisnew.scale.min = y.scale.min;
                yaxisnew.scale.max = y.scale.max;
                //设置y轴颜色
                yaxisnew.color = y.color;
                //设置刻度线字体颜色
                yaxisnew.scale.fontspec.fontcolor = y.color;
                //设置标题字体颜色
                yaxisnew.title.fontspec.fontcolor = y.color;
                //yaxisnew.type = axistype.text;
                //显示小刻度 是false则看不到效果
                //yaxisnew.minorgrid.isvisible = true;
                // turn off the opposite tics so the y2 tics don't show up on the y axis
                //关闭相反的tics,使y2 tics不会显示在y轴上
                yaxisnew.majortic.isinside = true;
                yaxisnew.minortic.isinside = true;
                yaxisnew.majortic.isopposite = true;
                yaxisnew.minortic.isopposite = true;
               
              
                // align the y2 axis labels so they are flush to the axis
                //对齐y2轴标签,使其与轴平齐
                //yaxisnew.scale.align = alignp.inside;
                //添加到y轴的list
                mypane.yaxislist.add(yaxisnew);
                //关闭窗口
                addy.close();
                zedgraphcontrol1.invalidate();
            }
        }

 

效果

 

 

 

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网