ZedGraph怎样在双击图形后添加箭头标记
生活随笔
收集整理的這篇文章主要介紹了
ZedGraph怎样在双击图形后添加箭头标记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
在ZedGraph的曲線圖上,雙擊圖時會在圖形上生成箭頭符號標記。
效果
?
注:
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先在ZedGraph所在的窗體的load事件中對ZedGraph的鼠標雙擊事件進行重寫
??? zgc.DoubleClickEvent -= zgc_DoubleClickEvent;?????? //鼠標雙擊事件訂閱zgc.DoubleClickEvent += zgc_DoubleClickEvent;?????? //鼠標雙擊事件訂閱然后在具體訂閱的事件實現中
private static bool zgc_DoubleClickEvent(ZedGraphControl sender, MouseEventArgs e){//獲取(ZedGraphControl 對象ZedGraphControl zgc = sender as ZedGraphControl;if (zgc != null){try{//獲取鼠標焦點距離最近的點所在的曲線以及在曲線上的點的索引PointF mousePt = new PointF(e.X, e.Y);CurveItem nearstCurve;int i;zgc.GraphPane.FindNearestPoint(mousePt, out nearstCurve, out i);if (nearstCurve != null && nearstCurve.Points[i] != null){//獲取鼠標焦點距離最近的點的坐標Double x = nearstCurve.Points[i].X;Double y = nearstCurve.Points[i].Y;string title = nearstCurve.Points[i].Tag as string;#region 添加箭頭標記ArrowObj myArrow = new ArrowObj(Color.FromArgb(0xA0, 0x00, 0x00), 20, i + 1, zgc.GraphPane.YAxisList[0].Scale.Min, i + 1,zgc.GraphPane.YAxisList[0].Scale.Max);myArrow.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;myArrow.Line.DashOff = 1;myArrow.Line.DashOn = 1;myArrow.ZOrder = ZOrder.B_BehindLegend;zgc.GraphPane.GraphObjList.Clear();zgc.GraphPane.GraphObjList.Add(myArrow);#endregion}return true;}catch(Exception ex){ICSharpCode.Core.LoggingService<DataChartHelper>.Error("zgc_DoubleClickEvent exception:" + ex.Message, ex);return false;}}else{return false;}}注:
首先獲取距離鼠標焦點最近的點以及所在的曲線。
然后根據距離最近的點的橫縱坐標使用ArrowObj 對象生成線。
ArrowObj :表示圖形上的圖形箭頭或線對象的類。ArrowObj對象的列表由GraphObjList集合類維護。
ArrowObj 的構造方法為:
?
第一個參數為顏色對象,第二個參數為大小,后面四個參數用于定位,兩點確定一條直線,兩個坐標確定一個點,所以是四個坐標確定一條線。
前兩個確定一個點,后兩個確定一個點。
在代碼中使用的是:
ArrowObj myArrow = new ArrowObj(Color.FromArgb(0xA0, 0x00, 0x00), 20, i + 1, zgc.GraphPane.YAxisList[0].Scale.Min, i + 1,zgc.GraphPane.YAxisList[0].Scale.Max);?第一個點是在X軸上點,其坐標為上面距離鼠標焦點最近的點的橫坐標+1,Y軸刻度的最小值。
?
第二個點坐標橫坐標一樣,縱坐標是Y軸刻度的最大值。
總結
以上是生活随笔為你收集整理的ZedGraph怎样在双击图形后添加箭头标记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中删除目录以及目录下文件的方法
- 下一篇: Dubbo与SpringBoot整合流程