C#을 사용하여 간단한 이미지 뷰어 프로그램을 만드는 방법을 설명하겠습니다. 이 프로그램은 Windows Forms 애플리케이션으로 작성되며, 사용자가 폴더를 선택하고 해당 폴더의 이미지를 탐색할 수 있는 기능을 포함합니다.
### 단계 1: 프로젝트 생성
1. Visual Studio를 열고 새 프로젝트를 생성합니다.
2. "Windows Forms App (.NET Framework)" 템플릿을 선택하고 프로젝트를 만듭니다.
3. 프로젝트 이름을 "ImageViewer"로 설정합니다.
### 단계 2: UI 디자인
Form에 필요한 컨트롤을 추가합니다:
1. `PictureBox` (이름: `pictureBox`): 이미지를 표시할 영역.
2. `Button` (이름: `btnOpenFolder`, 텍스트: "Open Folder"): 폴더를 여는 버튼.
3. `ListBox` (이름: `listBoxImages`): 폴더 내의 이미지 파일 목록을 표시.
4. `OpenFileDialog` (이름: `openFileDialog`): 폴더 선택을 위한 대화상자.
### 단계 3: 코드 작성
Form의 코드 파일 (`Form1.cs`)에 다음 코드를 추가합니다:
```csharp
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace ImageViewer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpenFolder_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog folderDialog = new FolderBrowserDialog())
{
if (folderDialog.ShowDialog() == DialogResult.OK)
{
LoadImages(folderDialog.SelectedPath);
}
}
}
private void LoadImages(string folderPath)
{
listBoxImages.Items.Clear();
string[] supportedExtensions = new[] { ".jpg", ".jpeg", ".png", ".bmp", ".gif" };
var files = Directory.GetFiles(folderPath)
.Where(file => supportedExtensions.Contains(Path.GetExtension(file).ToLower()))
.ToArray();
listBoxImages.Items.AddRange(files);
}
private void listBoxImages_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBoxImages.SelectedItem != null)
{
string selectedImagePath = listBoxImages.SelectedItem.ToString();
pictureBox.Image = Image.FromFile(selectedImagePath);
pictureBox.SizeMode = PictureBoxSizeMode.Zoom;
}
}
}
}
```
### 단계 4: 이벤트 핸들러 연결
Form 디자인 화면에서 각 컨트롤의 이벤트 핸들러를 연결합니다:
1. `btnOpenFolder`의 `Click` 이벤트에 `btnOpenFolder_Click` 메서드를 연결합니다.
2. `listBoxImages`의 `SelectedIndexChanged` 이벤트에 `listBoxImages_SelectedIndexChanged` 메서드를 연결합니다.
### 단계 5: 디자인 파일 수정
Form 디자인 파일 (`Form1.Designer.cs`)에서 컨트롤을 초기화하고 속성을 설정하는 코드를 추가합니다:
```csharp
namespace ImageViewer
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.pictureBox = new System.Windows.Forms.PictureBox();
this.btnOpenFolder = new System.Windows.Forms.Button();
this.listBoxImages = new System.Windows.Forms.ListBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
this.SuspendLayout();
// pictureBox
this.pictureBox.Location = new System.Drawing.Point(12, 12);
this.pictureBox.Name = "pictureBox";
this.pictureBox.Size = new System.Drawing.Size(560, 390);
this.pictureBox.TabIndex = 0;
this.pictureBox.TabStop = false;
// btnOpenFolder
this.btnOpenFolder.Location = new System.Drawing.Point(12, 408);
this.btnOpenFolder.Name = "btnOpenFolder";
this.btnOpenFolder.Size = new System.Drawing.Size(120, 30);
this.btnOpenFolder.TabIndex = 1;
this.btnOpenFolder.Text = "Open Folder";
this.btnOpenFolder.UseVisualStyleBackColor = true;
this.btnOpenFolder.Click += new System.EventHandler(this.btnOpenFolder_Click);
// listBoxImages
this.listBoxImages.FormattingEnabled = true;
this.listBoxImages.ItemHeight = 16;
this.listBoxImages.Location = new System.Drawing.Point(578, 12);
this.listBoxImages.Name = "listBoxImages";
this.listBoxImages.Size = new System.Drawing.Size(210, 388);
this.listBoxImages.TabIndex = 2;
this.listBoxImages.SelectedIndexChanged += new System.EventHandler(this.listBoxImages_SelectedIndexChanged);
// Form1
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.listBoxImages);
this.Controls.Add(this.btnOpenFolder);
this.Controls.Add(this.pictureBox);
this.Name = "Form1";
this.Text = "Image Viewer";
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.PictureBox pictureBox;
private System.Windows.Forms.Button btnOpenFolder;
private System.Windows.Forms.ListBox listBoxImages;
}
}
```
### 요약
이렇게 하면 사용자가 폴더를 선택하고 해당 폴더의 이미지를 탐색할 수 있는 간단한 이미지 뷰어 프로그램을 만들 수 있습니다. 이 프로그램은 Windows Forms를 사용하여 작성되었으며, 사용자가 선택한 이미지를 PictureBox에 표시합니다.