C#窗体-动态创建许多Button / Panels / PictureBox的过程很慢。如何加快速度?

时间:2018-07-09 16:16:22

标签: c# .net winforms

由于我不是使用C#表单的专家,所以希望我能朝正确的方向发展,因为我在特定的代码段中运行缓慢,并且不确定如何加快速度。

我现在拥有的方式是让用户选择图像和图块大小。

基于图像的尺寸和所选的图块大小,我一直在主图像上方绘制图像。这些图像是图块大小,其数字会填充主要图像的尺寸。我希望它们在单击它们时像按钮一样。到目前为止,这些图像已被用作面板目的。

如果我不必每次用户更改图像或图块大小时都需要重新计算我需要多少个面板,那还不错。但是按原样,它会跳动大约半秒钟,尤其是在较小的磁贴大小下。

换句话说,既然我必须制作大量图像/控件并动态显示它们,那么您会建议我做些什么来提高它的效率?

到目前为止,我有什么。

    pictureBox.Controls.Clear();

    //Create our large list of buttons
    for (int y = 0; y < tileCountHeight; y++)
    {
        for (int x = 0; x < tileCountWidth; x++)
        {
            Panel newPicture = new Panel();
            int locX = x * tileSize;
            int locY = y * tileSize;
            newPicture.Location = new Point(locX, locY);

            //Determine the starting image
            int dataIndex = x + (y * tileCountWidth);

            if (passabilityList.Count >= dataIndex)
            {
                passabilityList.Add(Passability.Passable);
            }

            switch (passabilityList[dataIndex])
                {
                    case Passability.Blocked:
                        newPicture.BackgroundImage = SquareImage;
                        break;

                    case Passability.HideBehind:
                        newPicture.BackgroundImage = TriangleImage;
                        break;

                    case Passability.Passable:
                        newPicture.BackgroundImage = CircleImage;
                        break;
                }

                newPicture.Width = tileSize;
                newPicture.Height = tileSize;
                newPicture.Visible = true;
                newPicture.BackgroundImageLayout = ImageLayout.Center;
                newPicture.Name = "picOptionX" + x + "Y" + y;

                pictureBox.Controls.Add(newPicture);                            
                }
            } 

0 个答案:

没有答案