Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 例如,当我用线连接14个点并尝试移动它们时,移动速度非常慢,什么';他怎么会走得那么慢?_C# - Fatal编程技术网

C# 例如,当我用线连接14个点并尝试移动它们时,移动速度非常慢,什么';他怎么会走得那么慢?

C# 例如,当我用线连接14个点并尝试移动它们时,移动速度非常慢,什么';他怎么会走得那么慢?,c#,C#,这是绘画活动: private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { SolidBrush brush; Pen p=null; Point connectionPointStart; Point connectionPointEnd; Graphi

这是绘画活动:

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            SolidBrush brush;
            Pen p=null;
           Point connectionPointStart;
           Point connectionPointEnd;
           Graphics g = e.Graphics;
           g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
               brush = new SolidBrush(Color.Red);
               p = new Pen(brush);
               for (int idx = 0; idx < wireObject1._point_X.Count; ++idx)
               {
                   Point dPoint = new Point((int)wireObject1._point_X[idx], (int)wireObject1._point_Y[idx]);
                   dPoint.X = dPoint.X - 5; // was - 2
                   dPoint.Y = dPoint.Y - 5; // was - 2
                   Rectangle rect = new Rectangle(dPoint, new Size(10, 10));
                   g.FillEllipse(brush, rect);

                  
               }
           
               for (int i = 0; i < wireObject1._connectionstart.Count; i++)
               {

                   int startIndex = wireObject1._connectionstart[i];
                   int endIndex = wireObject1._connectionend[i];

                   

                   connectionPointStart = new Point((int)wireObject1._point_X[startIndex], (int)wireObject1._point_Y[startIndex]);
                   connectionPointEnd = new Point((int)wireObject1._point_X[endIndex], (int)wireObject1._point_Y[endIndex]);
                   p.Width = 4;
                   g.DrawLine(p, connectionPointStart, connectionPointEnd);
                   moveCounter++;
                   textBox1.Text = moveCounter.ToString();
               }
                          
        }
timer2是我添加的另一个计时器,只是为了看看它在5秒内移动了多少次。所以,如果计时器1设置为30毫秒,我会在5秒后看到大约150个移动

所以在timer1滴答事件中,我做了:

private void timer1_Tick(object sender, EventArgs e)
        {
            if (refreshFlag == true)
            {
                pictureBox1.Refresh();
                refreshFlag = false;
            }
        }
我确信定时器的想法应该能解决这个问题,但它没有。所以我想知道问题出在哪里,也许我在绘画比赛中对循环做了一些错误的事情

列表连接开始包含索引,例如,如果我有两个点与一行连接,我单击一个点并拖动该点,使该行变长或变短,则列表连接开始包含索引,例如,我有一个包含索引0的位置/单元格[0]

例如,在列表_point_X中,[0]120.0和[1]180.0中放置了两个单元格,这两个单元格的点坐标与_point_Y列表的点坐标相同

现在的问题是问题出在哪里?油漆事件中的错误?跟搬家事件有关吗?我不明白为什么它会变得如此缓慢,当它有9-10个点与它们之间的许多线连接


例如,我现在用两个点连接一条线进行测试,我移动了一个点,将线拉长或拉短,5秒后结果是160次移动,然后再5秒后是323次,依此类推。所以它似乎在运行计时器1和30毫秒,或者我错了?

首先,对应用程序进行一些调整: 您是否尝试运行与绘图分离的逻辑?=>例如,“updateData()”方法和“draw()”方法?此外,我建议使用

第二,如果对于较大的数据集(当您添加更多点时)性能不佳,则您的算法效率不够。如果要绘制多边形,请首先更新顶点坐标,然后调用

private void timer1_Tick(object sender, EventArgs e)
        {
            if (refreshFlag == true)
            {
                pictureBox1.Refresh();
                refreshFlag = false;
            }
        }