Перемещение панелей с элементами управления внутри них приводит к значительному запаздыванию и использованию процессора на 30-40% - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь переместить некоторые панели вручную, которые содержат рисунки и другие элементы управления в C# WinForms. Я искал в Интернете, но безуспешно. Я слышал, что мне нужно будет преобразовать весь проект в WPF или использовать OpenGL для рисования (что я не могу, потому что это элементы управления). Это мой код для перемещения панелей, в нем отсутствует пара переменных, поскольку они используются для перемещения сетки за всеми узлами.

        private void PictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (Control.MouseButtons == MouseButtons.Right)
            {
                gridoffsetx = gridoffsetxprev + MousePosition.X - mouseoffsetx;
                gridoffsety = gridoffsetyprev + MousePosition.Y - mouseoffsety;

                Point relativemouse = PointToClient(new Point(MousePosition.X, MousePosition.Y));

                Point newpanelloc = new Point();

                for (int i = 0; i < nodes.Count; i++)
                {
                    newpanelloc.X = nodesprevpos[i].X + MousePosition.X - mouseoffsetx;
                    newpanelloc.Y = nodesprevpos[i].Y + MousePosition.Y - mouseoffsety;
                    nodes[i].pnl.Location = newpanelloc;
                }
                pictureBox1.Invalidate();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...