我将此代码显示在带有pIctureBox的面板图像中:
private void ARR(int cNumber, string exc)
{
int Xpos = 8;
int Ypos = 8;
Image img;
Image.GetThumbnailImageAbort myCallback =
new Image.GetThumbnailImageAbort(ThumbnailCallback);
imgArray = new System.Windows.Forms.PictureBox[cNumber]; // assign number array
for (int i = 0; i < cNumber; i++)
{
imgArray[i] = new System.Windows.Forms.PictureBox();
if (Xpos > 432) // six images in a line
{
Xpos = 8; // leave eight pixels at Left
Ypos = Ypos + 72; // height of image + 8
}
imgArray[i].Left = Xpos;
imgArray[i].Top = Ypos;
imgArray[i].Width = 64;
imgArray[i].Height = 64;
imgArray[i].Visible = true;
imgArray[i].SizeMode = PictureBoxSizeMode.StretchImage;
img = Image.FromFile(exc);
imgArray[i].Tag = exc[i];
imgArray[i].Image = img.GetThumbnailImage(64, 64, myCallback, IntPtr.Zero);
panel1.Controls.Add(imgArray[i]);
Xpos = Xpos + 72;
}
}
私人列表GetPicture4(字符串文件夹) {
DirectoryInfo dir = new DirectoryInfo(Folder);
List<string> str = new List<string>();
FileInfo[] files = dir.GetFiles("*.jpg", SearchOption.AllDirectories);
NumOfFiles = files.Length;
imgExtension = new string[NumOfFiles];
for (int i = 0; i < NumOfFiles; i++)
{
foreach (FileInfo file in files)
{
ARR(NumOfFiles, file.FullName);
str.Add(file.FullName);
}
return str;
}
在“Music”文件夹中有30个file.jpg但是当我调试Panel时显示30张图片但是同一个文件“jpg”。 我不明白错误在哪里:(。 你有什么建议或想法我错了吗? Thansk很多。
好的问候
答案 0 :(得分:1)
没想出来但你的代码不起作用:
private List<string> GetPicture4(string Folder) //you need to define the type of list you are returning
{
DirectoryInfo dir = new DirectoryInfo(Folder);
List<string> str = new List<string>();
FileInfo[] files = dir.GetFiles("*.jpg", SearchOption.AllDirectories);
int NumOfFiles = files.Length; //here you are missing a type, int in this case
imgExtension = new string[NumOfFiles];
for (int i = 0; i < NumOfFiles; i++)
{
ARR(i, files[i].FullName); //pass i instead of NumOfFiles else in ARR the creating of the picturebox gets the same ID everytime
str.Add(files[i].FullName);
}
return str;
}
编辑: ADD功能怎么样:
imgArray = new System.Windows.Forms.PictureBox[cNumber]; // assign number array
此行不应该在这里。你已经在循环中创建了一个