場景 Winform中實現ZedGraph的多條Y軸(附源碼下載): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100132245 在上面實現顯示多條自定義Y軸的效果上,改進實現自定義新增Y軸功能。 關註公眾號霸道的程式猿獲取 ...
場景
Winform中實現ZedGraph的多條Y軸(附源碼下載):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100132245
在上面實現顯示多條自定義Y軸的效果上,改進實現自定義新增Y軸功能。
關註公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載。
示例代碼下載
https://download.csdn.net/download/badao_liumang_qizhi/11653210
實現
主窗體添加按鈕,點擊之後彈出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(); } }
效果