예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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;
            }
        }