Рисование графики на GLControl OpenTK - PullRequest
0 голосов
/ 02 апреля 2020

Я создаю графическое приложение, используя win-формы GLControl. Пользователь должен иметь возможность увеличивать любую область на графике. Я думал о том, чтобы позволить пользователю нарисовать прямоугольник всякий раз, когда он удерживает левую кнопку мыши и перетаскивает его. Новый увеличенный экран будет иметь координаты этого прямоугольника. Я реализовал System.Drawing.Graphics.DrawRectangle в GlControl1_MouseMove, но он ничего не рисует, хотя событие проверяется с помощью точки останова.

  private void Form4_Load(object sender, EventArgs e)
        {   
            load_Model(); ///Function for setting up the shaders
            glControl1.Invalidate();
            _timer = new System.Timers.Timer(10.0); 
            _timer.Elapsed += TimerElapsed;
            _timer.Start();

        }
    private void Form4_Paint_1(object sender, PaintEventArgs e)
    { 
        GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
        GL.UseProgram(shader.Use());
        glControl1.SwapBuffers();
    }

   private void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            glControl1.Invalidate();
        }

   Vector2 mousePos;
    private void GlControl1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDown)
        {
            Pen drwaPen = new Pen(Color.Black, 2);
            Rectangle rect = new Rectangle(Convert.ToInt32(mousePos.X), Convert.ToInt32(mousePos.Y), Math.Abs(e.X-Convert.ToInt32(mousePos.X)), Math.Abs(e.Y-Convert.ToInt32(mousePos.Y)));
            System.Drawing.Graphics Formgraphics = this.CreateGraphics();
            Formgraphics.DrawRectangle(drwaPen, rect);
        }

    }

    private void GlControl1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            mousePos = new Vector2(e.X, e.Y);
            isDown = true;
        }
    }

    private void GlControl1_MouseUp(object sender, MouseEventArgs e)
    {
        isDown = false;
    }

Нужно ли что-либо изменять в функции Paint?

...