Пример #1
0
        public void RefreshBorders()
        {
            drawArea.MakeCurrent();
            SetViewPort();
            double scaleX = (double)drawArea.Width / defaultWidth;
            double scaleY = (double)drawArea.Height / defaultHeight;

            proportion     = (float)(scaleX / scaleY);
            borders.Y      = (float)((-10.0 * scaleY * scale) + offsety);
            borders.Height = (float)(20.0 * scaleY * scale);
            borders.X      = (float)(-10.0 * scaleX * scale + offsetx);
            borders.Width  = (float)(20.0 * scaleX * scale);
            // настройка проекции
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();

            // теперь необходимо корректно настроить 2D ортогональную проекцию
            // в зависимости от того, какая сторона больше
            // мы немного варьируем то, как будет сконфигурированный настройки проекции

            Glu.gluOrtho2D(borders.Left, borders.Right, borders.Top, borders.Bottom);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            pixelsPerUnit = ((double)drawArea.Height / borders.Height);
        }
Пример #2
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();
        }
Пример #3
0
        public void Plot()
        {
            if (!Window.add)
            {
                PlotSer = true;
                //paint = new Paint(Rts, pnlCh);
                //paint.Plot(); //, pnlCh);
                //MessageBox.Show(pnlCh.Controls.Count.ToString());
                Chart.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);
                // далее мы рисуем координатные оси и стрелки на их концах
                int l    = hiCl - 1;
                int From = -X0 - wiCl;
                int To   = -X0 + ScreenW;
                //  string str;
                foreach (var ds in DrawSer.Bars)
                {
                    var gfgf = ds.Value.Price.ElementAt(0).Value[0];
                    if (gfgf >= From && gfgf <= To)
                    {
                        foreach (var pr in ds.Value.Price)
                        {
                            Gl.glVertex2d(pr.Value[0], pr.Value[2]);
                            Gl.glVertex2d(pr.Value[0], pr.Value[2] + l);
                            Gl.glVertex2d(pr.Value[1], pr.Value[2] + l);
                            Gl.glVertex2d(pr.Value[1], pr.Value[2]);
                        }
                    }
                }
                // завершаем режим рисования
                Gl.glEnd();

                // установка черного цвета
                Gl.glColor3f(0, 0, 50);
                Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex2d(DrawSer.lastPriceX, DrawSer.lastPriceY);
                Gl.glVertex2d(DrawSer.lastPriceX + 10, DrawSer.lastPriceY + 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 80, DrawSer.lastPriceY + 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 80, DrawSer.lastPriceY - 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 10, DrawSer.lastPriceY - 10);
                Gl.glEnd();

                Gl.glColor3f(1, 1, 1);
                string strr = DrawSer.lastPrice.ToString();
                int    i    = 0;
                foreach (var ch in strr)
                {
                    Gl.glBegin(Gl.GL_LINE_STRIP);

                    foreach (var f in FontPlot.Symbols[ch])
                    {
                        //  Glut.glutStrokeCharacter(Glut.GLUT_STROKE_ROMAN, '3');
                        Gl.glVertex2i(DrawSer.lastPriceX + 15 + i * 9 + f.X, DrawSer.lastPriceY - 5 + Convert.ToInt32(f.Y));
                    }
                    Gl.glEnd();
                    i++;
                }
                Gl.glColor3f(0.172f, 0.2f, 0.215f);
                Gl.glBegin(Gl.GL_LINE_STRIP);
                Gl.glVertex2d(DrawSer.lastPriceX, DrawSer.lastPriceY);
                Gl.glVertex2d(0, DrawSer.lastPriceY);
                Gl.glEnd();

                // PlotNum();
                Gl.glPopMatrix();
                Gl.glFlush();
                Chart.Invalidate();
                //  PlotNum();
                PlotAxis();
                PlotSer = false;
            }
        }