2014-04-27 3 views
1

간단한 이미지 뷰어를 만들려고합니다. 나는 다음과 같은 코드를 사용하여 폴더에서의 PictureBox에 이미지를로드 할 수 있습니다 : 이것은 단순히 폴더에서 이미지를 선택하고있는 PictureBox에로드 나를 수폴더에 다음 이미지를로드하는 방법은 무엇입니까?

private void button1_Click(object sender, EventArgs e) 
{ 
    using (OpenFileDialog dlg = new OpenFileDialog()) 
    { 
     dlg.Title = "Open Image"; 
     dlg.Filter = "All|*.jpg;*.bmp;*.gif;*.png|JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png"; 

     if (dlg.ShowDialog() == DialogResult.OK) 
     {pictureBox1.Image = new Bitmap(dlg.FileName); } 
    } 
} 

. 이제 "Next Image"버튼을 만들 수 있는지 알고 싶습니다.이 버튼은 어떤 이미지를로드했는지 인식하고 같은 폴더에있는 다음 이미지를 찾고 picturebox에서 엽니 다. 미안해, 내 영어가별로 좋지 않아. 감사.

답변

0

가능한 해결책은 다음과 같습니다. button1_Click 방법은 마지막 행을 제외하고 가지고있는 것과 같습니다. 이것을 사용하면 오류 처리를 추가해야합니다.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private AvailableImages _availableImages; 

    private class AvailableImages 
    { 
     private List<string> _images; 
     private int _selectedImage; 

     public AvailableImages(IEnumerable<string> images, string selectedImage = null) 
     { 
      _images = images.ToList(); 
      _selectedImage = selectedImage == null ? 0 : _images.IndexOf(selectedImage); 
     } 

     public Bitmap GetNextImage() 
     { 
      return new Bitmap(_images[_selectedImage = ++_selectedImage >= _images.Count ? 0 : _selectedImage]); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     using (OpenFileDialog dlg = new OpenFileDialog()) 
     { 
      dlg.Title = "Open Image"; 
      dlg.Filter = "All|*.jpg;*.bmp;*.gif;*.png|JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png"; 

      if (dlg.ShowDialog() == DialogResult.OK) 
      { 
       pictureBox1.Image = new Bitmap(dlg.FileName); 
       _availableImages = new AvailableImages(System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(dlg.FileName)).Where(m => m.ToUpper().EndsWith("JPG") || m.ToUpper().EndsWith("BMP") || m.ToUpper().EndsWith("GIF") || m.ToUpper().EndsWith("PNG")), dlg.FileName); 
      } 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     pictureBox1.Image = _availableImages.GetNextImage(); 
    } 
} 
관련 문제