/// <summary> /// отрисовка произвольного графика функции /// </summary> /// <param name="F">функция для построения</param> /// <param name="scaleX">масштаб по оси X (ед/пикс)</param> /// <param name="scaleY">масштаб по оси Y (ед/пикс)</param> /// <param name="leftX">абцисса крайней левой графика</param> /// <param name="topY">оридината верхней точки графика</param> private void DrawFunc(FuncOfX F, double scaleX, double scaleY, double leftX, double topY, Pen pen) { //вертикальная координата полотна предыдущей точки float lastY = 0; //цикл по всей картинке. curX - горизонтальная координата полотна текущей точки for (int curX = 0; curX < Canvas.VisibleClipBounds.Width; curX++) { //curY - вертикальная координата полотна текущей точки float curY = (float)(scaleY * (topY - F(leftX + (double)curX / scaleX))); if (curX != 0) { Canvas.DrawLine(pen, curX, curY, curX - 1, lastY); } lastY = curY; } }
/// <summary> /// отрисовка произвольного графика функции /// </summary> /// <param name="F">функция для построения</param> /// <param name="scaleX">масштаб по оси X (ед/пикс)</param> /// <param name="scaleY">масштаб по оси Y (ед/пикс)</param> /// <param name="leftX">абцисса крайней левой графика</param> /// <param name="topY">оридината верхней точки графика</param> private void DrawFunc(FuncOfX F, double scaleX, double scaleY, double leftX, double topY, Pen pen) { //вертикальная координата полотна предыдущей точки float lastY = 0; //цикл по всей картинке. curX - горизонтальная координата полотна текущей точки for (int curX = 0; curX < Canvas.VisibleClipBounds.Width; curX++) { //curY - вертикальная координата полотна текущей точки float curY = (float)(scaleY * (topY - F(leftX + (double)curX / scaleX))); if (curX != 0) Canvas.DrawLine(pen, curX, curY, curX - 1, lastY); lastY = curY; } }