【问题标题】:Picture Box and Panel in Windows Form C#Windows 窗体 C# 中的图片框和面板
【发布时间】:2013-08-12 21:26:11
【问题描述】:

我需要在表单中显示 100 个图像,一个在另一个之下。

我遵循以下想法:

在表单中添加了一个面板,并在代码中添加了 100 个图片框,并为每个图片框分配了我拥有的图像。
现在的问题是我只能看到 32 个图片框。
为什么?任何属性都需要更新...?
下面是我的代码:

List<int> bottomlist = new List<int>();
for (int i = 0; i < 100; i++)
{
    PictureBox pic = new PictureBox();
    Image img = //I get image by some code here//
    pic.Image = img;
    pic.Size = img.Size;
    if (i == 0)
        bottomlist.Add(pic.Bottom + 8);
    else
        bottomlist.Add(pic.Bottom + bottomlist[i - 1] +8);
    if (i == 0)
        pic.Top = 8;
    else
    {
        pic.Top = bottomlist[i - 1] + 8;
    }
    pic.Left = (panel1.ClientSize.Width - pic.Width) / 2;
    panel1.Controls.Add(pic);
}

【问题讨论】:

  • 我认为它与记忆有关
  • @developerCoder-- 好的,当我向下滚动时,我会尝试清除顶部的图像。
  • 你的两个 if 都在 i==0 上,为什么不合并它们
  • 您是否在面板中启用了自动滚动?
  • @Sayse 是的,我保留了一个断点并检查了......它迭代了 100 次

标签: c# winforms image panel picturebox


【解决方案1】:

我拿了你的代码并运行它,遇到了与你类似的问题:我只看到了 8 张图片。

然后我记得面板需要手动将 AutoScroll 定义为 true,否则看起来我的图像较少。现在我可以看到它们了:

代码和你的一样,唯一添加的是

     this.panel1.AutoScroll = true;

如果您需要调整图片大小,请尝试this article。它基本上说要做:

public static Image resizeImage(Image imgToResize, Size size)
{
   return (Image)(new Bitmap(imgToResize, size));
}

yourImage = resizeImage(yourImage, new Size(50,50));

【讨论】:

  • Frnd,我将 Autoscroll 设置为 true,但我的所有图像的高度都是 1056px
  • 所以你有很多东西要滚动? @UthistranS。我想了解你在问什么
  • 是的。!就是这样...您在上面使用了一些 iceon 大小的图像,我使用的是 860*1056,每个 100
  • 那么你需要缩小它们,这是一个完全不同的问题,让我谷歌@UthistranS。
  • 如果你想显示 100 张大图,我建议你从一次只显示 10 张开始,当他通过 10@UthistranS 时让用户移动到另一个页面。
猜你喜欢
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多