C# Windows窗体C中的图片框和面板#
我需要在表单中显示100个图像,一个在另一个下面 我的想法如下: 在表单中添加了一个面板,在代码中我添加了100个图片框,并为每个图片框分配了我拥有的图像。C# Windows窗体C中的图片框和面板#,c#,winforms,image,panel,picturebox,C#,Winforms,Image,Panel,Picturebox,我需要在表单中显示100个图像,一个在另一个下面 我的想法如下: 在表单中添加了一个面板,在代码中我添加了100个图片框,并为每个图片框分配了我拥有的图像。 现在的问题是我只能看到32个图片框。 为什么?需要更新任何属性…? 下面是我的代码: List<int> bottomlist = new List<int>(); for (int i = 0; i < 100; i++) { PictureBox pic = new PictureBox();
现在的问题是我只能看到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);
}
List bottomlist=新列表();
对于(int i=0;i<100;i++)
{
PictureBox pic=新PictureBox();
Image img=//我在这里通过一些代码获得图像//
pic.Image=img;
图片尺寸=图像尺寸;
如果(i==0)
底部列表。添加(图底部+8);
其他的
添加(图底部+底部列表[i-1]+8);
如果(i==0)
图:Top=8;
其他的
{
pic.Top=底部列表[i-1]+8;
}
pic.Left=(panel1.ClientSize.Width-pic.Width)/2;
面板1.控件。添加(pic);
}
我获取了您的代码并运行了它,但遇到了与您类似的问题:我只看到了8幅图像
然后我想起,面板需要手动将AutoScroll
定义为true,否则看起来图像就少了。现在我可以看到所有这些:
代码与您的相同,只添加了
this.panel1.AutoScroll = true;
如果需要调整图片大小,请尝试。它基本上是说要做:
public static Image resizeImage(Image imgToResize, Size size)
{
return (Image)(new Bitmap(imgToResize, size));
}
yourImage = resizeImage(yourImage, new Size(50,50));
我想是关于memory@developerCoder--好的,当我向下滚动时,我将尝试清除顶部的图像。两个if都在I==0上,为什么不合并它们?您是否在面板中启用了AutoScroll?@回答是的,我保留了一个断点并检查了。。。它迭代了100次FRND,我将Autoscroll设置为true,但我所有的图像都有1056px的高度,所以你有很多东西要滚动@乌西斯特拉斯。我想知道你在问什么是的。!就这样。。。你在上面用了一些iceon大小的图片,我用的是860*1056每个100个,然后你需要缩小它们,这是一个完全不同的问题,让我用谷歌搜索一下@UthistranS。如果你想显示100个大图片,我建议你一次只显示10个,当用户通过10个@UthistranS时,让他移动到另一个页面。