/// <summary> /// Transforms chart cordinates to real coordinates. /// </summary> /// <param name="x">The x value.</param> /// <param name="y">The y value.</param> /// <returns>The visible point</returns> public Point TransformToVisible(double x, double y) { x = x = x_IsLogarithmic && x > 0 ? Math.Log(x, xlogarithmicBase) : x; y = y_IsLogarithmic && y > 0 ? Math.Log(y, ylogarithmicBase) : y; double radius = m_radius * m_yAxis.ValueToCoefficient(y); Point point = ChartTransform.ValueToVector(m_xAxis, x); return(new Point(m_center.X + radius * point.X, m_center.Y + radius * point.Y)); }
/// <summary> /// Return point values from the given values /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="x_isInversed"></param> /// <param name="y_isInversed"></param> /// <returns></returns> public Point TransformToVisible(double x, double y, bool x_isInversed, bool y_isInversed) { x = x = x_IsLogarithmic && x > 0 ? Math.Log(x, xlogarithmicBase) : x; y = y_IsLogarithmic && y > 0 ? Math.Log(y, ylogarithmicBase) : y; if (this.m_IsRoated) { double left = YAxis.RenderedRect.Left - XAxis.Area.SeriesClipRect.Left; double top = XAxis.RenderedRect.Top - YAxis.Area.SeriesClipRect.Top; return(new Point(left + YAxis.RenderedRect.Width * YAxis.ValueToCoefficient(y, y_isInversed), top + XAxis.RenderedRect.Height * (1 - XAxis.ValueToCoefficient(x, x_isInversed)))); } else { double left = XAxis.RenderedRect.Left - XAxis.Area.SeriesClipRect.Left; double top = YAxis.RenderedRect.Top - YAxis.Area.SeriesClipRect.Top; return(new Point(left + Math.Round(XAxis.RenderedRect.Width * XAxis.ValueToCoefficient(x, x_isInversed)), top + Math.Round(YAxis.RenderedRect.Height * (1 - YAxis.ValueToCoefficient(y, y_isInversed))))); } }