프로그래밍 기술

[C#] Winform 환경에서 메인 Main에서 서브 Sub 폼으로 이미지 전달하기

zero2one 2025. 5. 4. 23:00
728x90

윈폼 환경에서 개발을 하다 보면 여러개의 SubForm 생성이 필요한 경우 가 빈번합니다. 첫 번째 예에서는 한장의 이미지를 Main에서 Sub로 전달하는 방법입니다. 예에서는 이미지를 읽어 와서 전달하는 예이지만 메모리에 저장되어 있는 Bitmap 등의 이미지도 동일한 방법으로 전달이 가능합니다. 예에서는 SubForm에 PictureBox가 이미 추가 되어 있다고 가정합니다.

 

1) 이미지 한장 전달 시, 서브폼 SubForm 및 메인폼 MainForm

using System;
using System.Drawing;
using System.Windows.Forms;

// sub form
public partial class SubForm : Form
{
    public SubForm(Image image)
    {
        InitializeComponent();
        if (image != null)
        {
            pictureBox1.Image = image; // picture box
        }
    }
}

 

using System;
using System.Drawing;
using System.Windows.Forms;

// main form
public partial class MainForm : Form
{
    private Image lenaImage;

    public MainForm()
    {
        InitializeComponent();
        lenaImage = Image.FromFile("Lena.jpg");  // 로컬 이미지 로드
    }

    private void btnOpenSubForm_Click(object sender, EventArgs e) // 버튼
    {
        SubForm subForm = new SubForm(lenaImage);
        subForm.Show();
    }
}

 

필요따라 여러 장의 이미지를 전달할 경우도 있습니다. 두번째 예에서는 리스트 List를 이용하여 여러 이미지를 전달하는 방법입니다. 이미지 뿐만 아니라 다른 형 Type에 여러 데이터를 전달 할때에는 ArrayList를 활용하면 쉽게 전달 할 수 있습니다.

 

2) 이미지 여러장 전달 시, 서브폼 SubForm 및 메인폼 MainForm

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

// sub form
public partial class SubForm : Form
{
    public SubForm(List<Image> images)
    {
        InitializeComponent();
        
        if (images != null && images.Count > 0)
        {
           // 여러 Picture Box에 각 이미지 표시
            pictureBox1.Image = images[0];
            pictureBox2.Image = images[1];
            pictureBox3.Image = images[2];
            
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

// main form
public partial class MainForm : Form
{
    private List<Image> imageList = new List<Image>();

    public MainForm()
    {
        InitializeComponent();

        // 예시: 이미지 여러 개 로드
        imageList.Add(Image.FromFile("A.jpg"));
        imageList.Add(Image.FromFile("B.jpg"));
        imageList.Add(Image.FromFile("C.jpg"));
    }

    private void btnOpenSubForm_Click(object sender, EventArgs e)
    {
        SubForm subForm = new SubForm(imageList);
        subForm.Show();
    }
}
728x90