Ejemplo n.º 1
0
        // End конструктор

        public void Plot(PaintPoint ds, int X0, int Y0, double scaleX, double scaleY)
        {
            //paint = new Paint(Rts, pnlCh);
            //paint.Plot(); //, pnlCh);
            //MessageBox.Show(pnlCh.Controls.Count.ToString());
            Ant.MakeCurrent();
            // очистка буфера цвета и буфера глубины
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            // очищение текущей матрицы
            Gl.glLoadIdentity();

            // установка черного цвета
            Gl.glColor3f(100, 0, 0);

            // помещаем состояние матрицы в стек матриц
            Gl.glPushMatrix();

            // выполняем перемещение в пространстве по осям X и Y
            Gl.glTranslated(X0, Y0, 0);
            //  Gl.glScaled(scaleX, scaleY, 1);

            // Gl.glLineWidth(1);
            Gl.glBegin(Gl.GL_QUADS);//GL_LINES);
            // далее мы рисуем координатные оси и стрелки на их концах
            foreach (var bar in BarsDraw.Bars)
            {
                foreach (var k in bar.Point)
                {
                    Gl.glVertex2d(k.Of.X, k.Of.Y);
                    Gl.glVertex2d(k.Of.X, k.Of.Y + hightCl - 1);
                    Gl.glVertex2d(k.To.X, k.To.Y + hightCl - 1);
                    Gl.glVertex2d(k.To.X, k.To.Y);
                }
            }

            // завершаем режим рисования
            Gl.glEnd();
            //axis.PlotAxis(X0,Y0,scaleX,scaleY);

            Gl.glPopMatrix();
            Gl.glFlush();
            Ant.Invalidate();

            axis.PlotAxis1(ds, X0, Y0, scaleX, scaleY);
            //FontPlot.Plot(ds, startPrice, delta, Ant.Height, Ant.Width, Paint.hightCl, Paint.widthCl, X0, Y0);
            Ant.Invalidate();
        }
Ejemplo n.º 2
0
        public void PlotAxis1(PaintPoint ds, int X0, int Y0, double scaleX, double scaleY)
        {
            x += x0 - X0;
            y += y0 - Y0;
            //  sx = sx + sX - scaleX;
            //  sy = sy + sY - scaleY;
            // очищение текущей матрицы
            Gl.glLoadIdentity();

            // установка черного цвета
            // Gl.glColor3f(100, 0, 0);

            // помещаем состояние матрицы в стек матриц
            Gl.glPushMatrix();

            Gl.glColor3f(0.882f, 0.572f, 0.094f);
            Gl.glTranslated(X0 + x, Y0 + y, 0);
            // Gl.glScaled(sx, sy, 1);
            // Gl.glScaled(sx, sy, 1);
            Gl.glLineWidth(1);
            Gl.glBegin(Gl.GL_LINES);
            // далее мы рисуем координатные оси и стрелки на их концах
            //Y
            Gl.glVertex2d(-widthY, hightWindow / 2);
            Gl.glVertex2d(-widthY, -hightWindow / 2 + highX);

            //X
            Gl.glVertex2d(-widthWindow, -hightWindow / 2 + highX);
            Gl.glVertex2d(-widthY, -hightWindow / 2 + highX);

            x0 = X0;
            y0 = Y0;
            //  sX = scaleX;
            //  sY = scaleY;
            // завершаем режим рисования
            Gl.glEnd();
            FontPlot.Plot(ds, startPrice, delta, hightWindow, widthWindow, Paint.hightCl, Paint.widthCl, X0, Y0);


            // Gl.glBegin(Gl.GL_TEXCOORD1_BIT_PGI);
            // Gl.glRasterPos3d(-widthY, 0, 1);
            // .glutBitmapString(, startPrice.ToString());
            // Gl.glEnd();

            Gl.glPopMatrix();
            Gl.glFlush();
        }
Ejemplo n.º 3
0
        // Прорисовка шрифтов на экране
        public static void Plot(PaintPoint ds, double stPr, double delta, int hi, int we, int hiCl, int weCl, int X0, int Y0)
        {
            x1 += x0 - X0;
            y1 += y0 - Y0;

            // double ff = y1 / delta;
            int    hag     = (int)(y1 / hiCl);           //delta);         // К-во кластеров в дельта смещении по оси цен
            int    ost     = Convert.ToInt32(y1 % hiCl); // Пикселей до следующего кластера цены
            double pr      = stPr + (hag * delta);       // Цена для отображения в соответствии со смещением
            int    dobavka = (Paint.hightCl - 10) / 2;   // Цена по центру кластера

            dobavka -= ost;
            int dobavka2 = dobavka;

            dobavka  -= hiCl;
            dobavka2 += hiCl;

            int delPrice = 10;

            if (Paint.hightCl >= 7 && Paint.hightCl < 10)
            {
                delPrice = 20;
            }
            else if (Paint.hightCl >= 5 && Paint.hightCl < 7)
            {
                delPrice = 40;
            }
            else if (Paint.hightCl >= 3 && Paint.hightCl < 5)
            {
                delPrice = 50;
            }
            else if (Paint.hightCl >= 2 && Paint.hightCl < 3)
            {
                delPrice = 100;
            }
            else if (Paint.hightCl < 2)
            {
                delPrice = 100;
            }
            Gl.glColor3f(1.0f, 1.0f, 1.0f);
            int d = 0;

            for (double j = 0; j <= hi / 2; j += hiCl)
            {
                dobavka += hiCl;
                double price = pr + d * delta;
                if ((price) % delPrice == 0)
                {
                    string str = (price).ToString();
                    Byte   i   = 0;
                    foreach (var ch in str)
                    {
                        Gl.glBegin(Gl.GL_LINE_STRIP);
                        foreach (var f in FontPlot.Symbols[ch])
                        {
                            Gl.glVertex2i(-Axis.widthY + i * 9 + 2 + f.X, dobavka + f.Y);
                        }
                        Gl.glEnd();
                        i++;
                    }
                }
                d++;
            }
            d = 0;
            for (double j = 0; j >= -hi / 2; j -= hiCl)
            {
                if ((dobavka2 -= hiCl) < -hi / 2 + 20)
                {
                    break;
                }
                double price = pr - d * delta;
                if ((price) % delPrice == 0)
                {
                    string str = (price).ToString();
                    Byte   i   = 0;
                    foreach (var ch in str)
                    {
                        Gl.glBegin(Gl.GL_LINE_STRIP);
                        foreach (var f in FontPlot.Symbols[ch])
                        {
                            if (dobavka + f.Y < -hi / 2)
                            {
                                break;
                            }
                            Gl.glVertex2i(-Axis.widthY + i * 9 + 2 + f.X, dobavka2 + f.Y);
                        }
                        Gl.glEnd();
                        i++;
                    }
                }
                d++;
            }
            x0 = X0;
            y0 = Y0;

            int sum      = 0;
            int t        = ds.Bars.Count - 1;
            int numBar   = ds.Bars.Count - 1;
            int deltaNum = 60 / weCl + 1;
            int printNum = numBar - deltaNum;

            for (int i = ds.Bars.Count - 1; i > 0; i--)
            {
                if (ds.Bars[i].Point[0].Of.X >= x1 - Axis.widthY - weCl && ds.Bars[i].Point[0].Of.X < x1 - Axis.widthY)
                {
                    numBar = i;
                    break;
                }
            }

            for (int i = ds.Bars.Count - 1; i > 0; i--)
            {
                // sum += weCl;
                if (printNum <= numBar && numBar >= numBar - we / weCl)
                {
                    string str        = (ds.Bars[printNum].date.Hour + ":" + ds.Bars[printNum].date.Minute).ToString();
                    int    startPrint = ds.Bars[printNum].Point[0].Of.X - x1 + weCl / 2 - 20;
                    byte   h          = 0;

                    foreach (var ch in str)
                    {
                        if (ch == ':')
                        {
                            Gl.glBegin(Gl.GL_LINES);
                            foreach (var f in FontPlot.Symbols[ch])
                            {
                                Gl.glVertex2i(startPrint + h * 9 + 2 + f.X, -hi / 2 + 1 + f.Y);
                            }
                            Gl.glEnd();
                            startPrint += 6;
                            continue;
                        }
                        Gl.glBegin(Gl.GL_LINE_STRIP);
                        foreach (var f in FontPlot.Symbols[ch])
                        {
                            Gl.glVertex2i(startPrint + h * 9 + f.X, -hi / 2 + 1 + f.Y);
                        }
                        Gl.glEnd();
                        h++;
                    }
                }
                printNum -= deltaNum;
                if (printNum < 0)
                {
                    break;
                }
                // numBar--;
            }
        }