如何绕过C#面板的最大大小限制

本文关键字:何绕过 | 更新日期: 2023-09-27 18:25:10

我正在尝试在Panel控件中显示图像(我使用的是WinForms),但是图像大于面板的最大大小(32767像素)。

我在互联网上搜索了这个问题,但我只找到了一些现成的解决方案,我不理解,因此不想使用它们
除了使用WPF之外,还有什么好的方法来解决这个问题?

到目前为止,我正在考虑手动迭代Panel中的控件,并根据需要更改它们的位置,然而,我认为这不会非常高效和丑陋。

重现问题的示例代码:

    for (int i = 0; i < 300; i++) {
        PictureBox picbox = new PictureBox();
        picbox.BackColor = Color.Red;
        picbox.Width = 500;
        picbox.Height = 250;
        picbox.Top = i * 500;
        panelDisplay.Controls.Add(picbox);
    }

如何绕过C#面板的最大大小限制

听起来你可能会尝试使用多个面板。

非常粗略:

 // (5 of these) x (60 pictureboxes in each) = 300 images in all:
 for (int panelNumber = 0; panelNumber < 5; panelNumber++) {
    Panel panel = new Panel();
    panel.Height = 30000; 
    panel.Top = panelNumber * 30000;
    // ...anything else needed to set up the panel...      
    for (int PictureBoxNr = 0; PictureBoxNr< 60; PictureBoxNr++) {
        PictureBox picbox = new PictureBox();
        picbox.BackColor = Color.Red;
        picbox.Width = 500;
        picbox.Height = 250;
        picbox.Top = PictureBoxNr * 500;
        panel.Controls.Add(picbox);
    }
    outerPanel.Controls.Add(panel);
}