private void DravPolyline(double x, double y, double maxValueX = 0, double maxValueY = 0) { if (double.IsNaN(x) || double.IsNaN(y) || double.IsNaN(maxValueX) || double.IsNaN(maxValueY)) { return; } if (double.IsInfinity(x) || double.IsInfinity(y) || double.IsInfinity(maxValueX) || double.IsInfinity(maxValueY)) { return; } if (maxValueX == 0 || maxValueY == 0) { maxValueY = _current_MaxValue_Y; maxValueX = _current_MaxValue_X; } double copyX = x; double copyY = y; using (MathXY mathPoint = new MathXY()) { AxisPosition = mathPoint.GetAxisPosition(copyX, copyY, valueOsX, valueOsY, heightChar, ChangeScaleAxisX, ChangeScaleAxisY); if (AxisPosition != null) { lineChar.Points.Add(new Point(AxisPosition.PositionX, AxisPosition.PositionY)); } AxisPosition.Dispose(); } }
//drawing a chart public PositionXY GetAxisPosition(double X, double Y, double distancePointAxisX, double distancePointAxisY, double height, double ChangeScaleAxisX, double ChangeScaleAxisY) { if (double.IsNaN(X) || double.IsNaN(Y) || double.IsNaN(distancePointAxisX) || double.IsNaN(distancePointAxisY) || double.IsNaN(height) || (double.IsNaN(ChangeScaleAxisX) || double.IsNaN(ChangeScaleAxisY))) { return(null); } if (double.IsInfinity(X) || double.IsInfinity(Y) || double.IsInfinity(distancePointAxisX) || double.IsInfinity(distancePointAxisY) || double.IsInfinity(height) || (double.IsInfinity(ChangeScaleAxisX) || double.IsInfinity(ChangeScaleAxisY))) { return(null); } position = new PositionXY() { //calculation of coordinates X and Y PositionX = distancePointAxisY * X - (ChangeScaleAxisX * distancePointAxisY), PositionY = (ChangeScaleAxisY * distancePointAxisX) - (distancePointAxisX * Y - height) }; return(position); }