C# 在面板中动态排列对象
因此,我从一个网站获取图像,并将它们存储在MostUsedHeroesAndImages中。然后,我试图通过动态创建PictureBox在面板上显示它们。我如何编程,使图片盒的创建从左=0顶部=25开始,然后当显示10个图像(每个图像之间有50个像素)时,它从左=0顶部=200开始,以显示另外10个图像,依此类推,生成一个图像网格?我现在有这个代码,它以一条从左到右的直线显示我的所有图像,它们之间没有间隙。我试着设置一个起点,但它只是将所有的图片存储在彼此的顶部。对于如何在每个图像之间留出间隙,并在显示10个图像时使其跳过一行,我不知道C# 在面板中动态排列对象,c#,dynamic,windows-forms-designer,C#,Dynamic,Windows Forms Designer,因此,我从一个网站获取图像,并将它们存储在MostUsedHeroesAndImages中。然后,我试图通过动态创建PictureBox在面板上显示它们。我如何编程,使图片盒的创建从左=0顶部=25开始,然后当显示10个图像(每个图像之间有50个像素)时,它从左=0顶部=200开始,以显示另外10个图像,依此类推,生成一个图像网格?我现在有这个代码,它以一条从左到右的直线显示我的所有图像,它们之间没有间隙。我试着设置一个起点,但它只是将所有的图片存储在彼此的顶部。对于如何在每个图像之间留出间隙,
public void RunMeta()
{
foreach(var mostPickedHero in FetchDataFromDota2Site.MostUsedHeroesAndImages)
{
PictureBox temp = new PictureBox();
temp.ImageLocation = mostPickedHero.ImageSource;
temp.SizeMode = PictureBoxSizeMode.StretchImage;
temp.Left = temp.Width * panel1.Controls.Count;
// temp.Location = new System.Drawing.Point(left, top);
panel1.Controls.Add(temp);
}
}
您可以使用而不是简单的面板(panel1)。
您只需在PictureBox控件上进行设置,即可形成间隙。
这是一个现成的解决方案,不涉及代码逻辑来包装图片。它也可以在调整面板大小时工作
FlowLayoutPanel的默认行为是从左到右水平放置控件(请参见),并自动换行(请参见)
请记住,当子控件(图片)的数量急剧增加时,FlowLayoutPanel可能会变慢。这可能会对您有所帮助