EllipseObj 使用

在图表中,显示一条直线,直线上显示一个圆点,如下图效果

 

 

使用EllipseObj显示圆点,半径为5像素点,在ZedGraph中,XY轴显示比例不同,5像素点代表的值也就不同,需要使用Axis的Transform与ReverseTransform进行转换,代码如下:

        /// <summary>
        /// 显示点
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="borderColor"></param>
        /// <param name="fillColor"></param>
        /// <param name="enableClick"></param>
        public void DisplayRationPoint(float x, float y, Color borderColor, Color fillColor, bool enableClick = true)
        {
            //数值转换为像素值
            var pix1X = _zedGraph.GraphPane.XAxis.Scale.Transform(x);
            var pix1Y = _zedGraph.GraphPane.YAxis.Scale.Transform(y);

            //起始点
            var pix2X = pix1X - 5;
            var pix2Y = pix1Y - 5;

            //像素值转换为实际值
            var startX = _zedGraph.GraphPane.XAxis.Scale.ReverseTransform(pix2X);
            var startY = _zedGraph.GraphPane.YAxis.Scale.ReverseTransform(pix2Y);

            //实际的宽度与高度
            var width = (startX - x)*2;
            var height = (startY - y)*2;


            EllipseObj ellipseObj = new EllipseObj(startX, startY, width, height, borderColor, fillColor);
            ellipseObj.Location.CoordinateFrame = CoordType.AxisXYScale;
            ellipseObj.IsClippedToChartRect = true;
            ellipseObj.Location.AlignH = AlignH.Center;
            ellipseObj.Location.AlignV = AlignV.Center;
            _zedGraph.GraphPane.GraphObjList.Add(ellipseObj);
            _zedGraph.AxisChange();
            _zedGraph.Invalidate();
        }

 

posted @ 2016-12-07 16:22  Dov  阅读(210)  评论(0)    收藏  举报