2016-11-17 1 views
-1

그래서 버튼과 4 개의 picturebox가 있습니다. 버튼을 클릭하면 첫 번째 picturebox 1 그림에 추가하고 두 번째 버튼을 클릭하면 picturebox2 = picturebox1을 만들고 싶습니다. 그리고 picturebox1는 새로운 이미지를 = 등 4 때까지 나는 그것이 모든 4 pictureboxes에 동일한 이미지 나 표시, 작동하지 않습니다 지금까지했지만 무엇 :디스플레이 4 picturebox 1 by 1

namespace ImageUploadAndCameraUse 
{ 
    public partial class Form1 : Form 
    { 
     Image File; 
     Image File2; 
     Image File3; 
     Image File4; 

     bool button1Click = true; 
     bool button1Click2 = true; 
     bool button1Click3 = true; 
     bool button1Click4 = true; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog f = new OpenFileDialog(); 
      f.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

      bool IsNullOrEmpty1 = false; 
      bool IsNullOrEmpty2 = false; 
      bool IsNullOrEmpty3 = false; 

      if (f.ShowDialog() == DialogResult.OK) 
      { 
       if (button1Click) 
       { 
        File = Image.FromFile(f.FileName); 
        pictureBox1.Image = File; 

        IsNullOrEmpty1 = true; 
        button1Click = false; 
       } 
       if (IsNullOrEmpty1 && button1Click2) 
       { 
        File2 = Image.FromFile(f.FileName); 
        pictureBox2.Image = pictureBox1.Image; 
        pictureBox1.Image = File2; 

        IsNullOrEmpty2 = true; 
        button1Click2 = false; 
       } 
       if (IsNullOrEmpty2 && button1Click3) 
       { 
        File3 = Image.FromFile(f.FileName); 
        pictureBox3.Image = File3; 
        IsNullOrEmpty3 = true; 
        button1Click3 = false; 
       } 
       if (IsNullOrEmpty3 && button1Click4) 
       { 
        File4 = Image.FromFile(f.FileName); 
        pictureBox4.Image = File4; 
        button1Click4 = false; 
       } 
      } 
     } 
    } 
} 

또한 당신이 알고있는 경우를 : 어떻게 모든 picturebox/이러한 모든 사진을 저장하기 위해 만들 폴더에 아무것도 가지고 있지 않으면 장치 카메라를 사용하여이 프로그램을 사용하여 사진을 찍을 수 있습니다.

답변

0

시도 복제 또는 PictureBox를위한 새로운 비트 맵을 인스턴스화 : 당신은 항상 같은 사진을 보여 있도록

File2 = Image.FromFile(f.FileName); 
pictureBox2.Image = new Bitmap(pictureBox1.Image); // or pictureBox1.Image.Clone() 
pictureBox1.Image = File2; 

당신은 참조를 복사합니다.

private List<Image> _images = new List<Image>(); 
private PictureBox[] _pictureBoxes = new [] { pictureBox1, pictureBox2, pictureBox3, pictureBox4 }; 

private void button1_Click(object sender, EventArgs e) { 
    var fileName = GetFileName(); 

    if (string.IsNullOrEmpty(fileName)) return; 

    var image = Bitmap.FromFile(fileName); 
    _images.Insert(0, image); // I don't control items in list, you can remove items when reach count grater than 4 

    for(var i = 0; i < Math.Min(_images.Count, 4); i++) { 
     // _pictureBoxes[i].Image = null; // I'm not sure if this is necessary 
     _pictureBoxes[i].Image = _images[i]; // set image as we store it in list 
    } 
} 

private string GetFileName() { 
    var form = new OpenFileDialog(); 
    form.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

    return form.ShowDialog() == DialogResult.OK ? form.FileName : ""; 
} 
+0

은 모든 그림 상자에서 여전히 같은 그림을 시도했지만, 두 번째로 클릭하면 이렇게하는 등의 첫 번째 클릭과 같이 단추를 클릭 할 수 없습니까? –

1

당신은 당신의 PictureBoxes를 통해 단지 루프가이 작업을 수행 할 수 있습니다 :

int boxIndex = 0; 

private void button1_Click(object sender, EventArgs e) { 
    OpenFileDialog f = new OpenFileDialog(); 
    f.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 
    if (f.ShowDialog() == DialogResult.OK) { 
    PictureBox[] boxes = new PictureBox[] { pictureBox1, pictureBox2, pictureBox3, pictureBox4 }; 
    if (boxIndex + 1 > boxes.Length) { 
     foreach (PictureBox pb in boxes) { 
     pb.Image = null; 
     } 
     boxIndex = 0; 
    } 
    for (int i = boxIndex; i > 0; --i) { 
     boxes[i].Image = boxes[i - 1].Image; 
    } 
    boxes[0].Image = Image.FromFile(f.FileName); 
    boxIndex++; 
    } 
} 
0

신경 끄시를 내가 해결이 복잡 비트이기 때문에

** 편집

당신의 algorith을 변경 시도 그것과 같은 전환기를 가진 나 자신 :

private void button1_Click(object sender, EventArgs e) 
     { 
      ++NumberOfClick; 
      switch (NumberOfClick) 
      { 
       case 1: 
        OpenFileDialog f = new OpenFileDialog(); 
        f.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

        if (f.ShowDialog() == DialogResult.OK) 
        { 
         File = Image.FromFile(f.FileName); 
         pictureBox1.Image = File; 
        } 

        break; 
       case 2: 
        OpenFileDialog f2 = new OpenFileDialog(); 
        f2.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

        if (f2.ShowDialog() == DialogResult.OK) 
        { 
         File = Image.FromFile(f2.FileName); 
         pictureBox2.Image = pictureBox1.Image; 
         pictureBox1.Image = File; 
        } 
        break; 
       case 3: 
        OpenFileDialog f3 = new OpenFileDialog(); 
        f3.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

        if (f3.ShowDialog() == DialogResult.OK) 
        { 
         File = Image.FromFile(f3.FileName); 
         pictureBox3.Image = pictureBox2.Image; 
         pictureBox2.Image = pictureBox1.Image; 
         pictureBox1.Image = File; 
        } 
        break; 
       case 4: 
        OpenFileDialog f4 = new OpenFileDialog(); 
        f4.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png"; 

        if (f4.ShowDialog() == DialogResult.OK) 
        { 
         File = Image.FromFile(f4.FileName); 
         pictureBox4.Image = pictureBox3.Image; 
         pictureBox3.Image = pictureBox2.Image; 
         pictureBox2.Image = pictureBox1.Image; 
         pictureBox1.Image = File; 
        } 

        break; 
       default: 
        // other clicks 
        // . . . 
        break; 

      } 
     }