1

pictureBox1、、...のような10個の画像ボックスを持つ単純なフォームがpictureBox2あります。pictureBox3

そして、次のような10個の画像を含むフォルダーがあります: image1、、...image2image3

今、私はハードコーディングしたくないことを知るのに十分賢いです...むしろpictureBox1.ImageLocation = image1pictureBox2.ImageLocation = image2画像ボックスにそれぞれの画像を入力するある種のループまたは配列を作成する必要がありますが、私は十分に賢くありません方法を理解します。

何かのようなもの:

for (int i = 0; i < 10; i++)
{
    pictureBox[i].ImageLocation = image[i];
}

最終的に、このプロジェクトが動的にスケーリングされることを望んでいました.12個の画像を含むファイルがある場合、プログラムは12個の画像ボックスを作成して画像をロードするだけです. 少しの助けは素晴らしいでしょう。

4

1 に答える 1

0

リストを提案しますが、そこにあるものは大まかに機能します。

List<PictureBox> pictureBoxes = new List<PictureBox>();
List<Image> images = new List<Image>();

//code to populate your lists

for (int i = 0; i < pictureBoxes.Count; i++)
{
    pictureBoxes[i].Image = images[i];
}

リストに十分な画像があることを確認したい場合は、PictureBox事前に確認できます。

if (images.Count >= pictureBoxes.Count)
{
    for (int i = 0; i < pictureBoxes.Count; i++)
    {
        pictureBoxes[i].Image = images[i];
    }
}

...または、画像がなくなる前にできるだけ多く入力してください。

for (int i = 0; i < pictureBoxes.Count && i < images.Count; i++)
{
    pictureBoxes[i].Image = images[i];
}


編集:文字列を使用して画像の場所を設定したい場合は、代わりにそれを行うことができます。これをチェックしてください:

  List<PictureBox> pictureBoxes = new List<PictureBox>();
  List<string> imageLocations = new List<string>();

  private void Form1_Load(object sender, EventArgs e)
  {
     PictureBox PB1 = new PictureBox();
     PB1.Location = new Point(0, 0);
     PB1.Size = new Size(144, 197);
     Controls.Add(PB1);
     PictureBox PB2 = new PictureBox();
     PB2.Location = new Point(145, 0);
     PB2.Size = new Size(327, 250);
     Controls.Add(PB2);

     pictureBoxes.Add(PB1);
     pictureBoxes.Add(PB2);

     imageLocations.Add(@"C:\PicExample\image1.jpg");
     imageLocations.Add(@"C:\PicExample\image2.jpg");

     for (int i = 0; i < pictureBoxes.Count && i < imageLocations.Count; i++)
     {
        pictureBoxes[i].ImageLocation = imageLocations[i];
     }
  }

ピクチャー!


PictureBoxeリスト を繰り返し作成するための編集:

リストのハードコーディングについて心配する必要がないようにしたい場合 (そして画像ボックスが同じサイズになる場合)、次のようにすることができます。

 for (int i = 0; i < HoweverManyPictureBoxesYouWant; i++)
 {
    PictureBox PB = new PictureBox();
    PB.Name = "PB" + i.ToString();
    PB.Location = new Point(250 * i, 0); //Edit this as you see fit for location, i'm just putting them in a row
    PB.Size = new Size(250, 250);
    PB.ImageLocation = @"C:\PicExample\image" + i.ToString() + ".jpg";
    Controls.Add(PB);
    pictureBoxes.Add(PB); //You only need to do this if you want the PB's in a list for other reasons than setting the image location
 }
于 2013-07-24T21:10:52.727 に答える