[C# 윈폼] PictureBox 컨트롤 더블클릭(DoubleClick) 시 이미지 확대 하기


안녕하세요.

 

오늘은 C# 윈폼에서 PictureBox 컨트롤을 더블클릭 했을 때, 확대된 이미지가 나오게끔 하는 방법에 대해서 알려 드리려고 합니다.

 

해당 기능을 익히시면, 향후에 C#에서 이미지를 다루실 때 유용하게 사용하실 수 있을 거라 생각합니다.

 

그럼 바로 예제를 통해서 어떻게 기능을 구현하는지 알아 보도록 하겠습니다.


 

우선 윈폼 빈 프로젝트를 하나 생성해 주시기 바랍니다.

 

그리고, 아래와 같이 PictureBox 컨트롤과 Button 컨트롤을 아래와 같이 배치시켜 주시기 바랍니다.


윈폼 빈 프로젝트 생성 및 컨트롤 배치



여기까지 잘 따라하셨나요?

 

이제 그러면 여기서 Zoom이라는 폼을 하나 더 생성을 할거에요.


ZoomForm 폼 생성하기



내가 만든 솔루션에 마우스를 가져다 대시고, 우 클릭을 하셔서 추가” -> “새 항목을 클릭 하셔서 윈폼 프로젝트를 하나 더 추가해 주시기 바랍니다.

 

저 같은 경우에는 ZoomForm 이라고 이름을 짓겠습니다.

 


위와 같이 ZoomForm이라는 폼 하나를 더 생성 하였습니다.


 

그리고 생성된 ZoomFormPictureBox 컨트롤을 배치해 주시고, Dock 설정을 Fill로 해주시기 바랍니다.


ZoomForm 에 PictureBox 컨트롤 배치



위와 같이 잘 안보이실 수도 있지만..현재 PictureBox 컨트롤을 Dock – Fill 상태로 배치시킨 모습입니다.

 


 

그리고 ZoomForm 속성에서 WindowState 상태를 “Maximized” 상태로 변경해 주시기 바랍니다.

 

이제 ZoomForm 소스코드를 작성해 보도록 할게요.


ZoomForm 소스 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace PictureBoxTest

{

    public partial class ZoomForm : Form

    {

        public string file = string.Empty;

 

        public ZoomForm()

        {

            InitializeComponent();

 

            this.Shown += ZoomForm_Shown;

        }

 

        /// <summary>

        /// ZoomForm Shown 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void ZoomForm_Shown(object sender, EventArgs e)

        {

            uiPb_Zoom.Image = Image.FromFile(file);

            uiPb_Zoom.SizeMode = PictureBoxSizeMode.Zoom;

        }

    }

}

 

Colored by Color Scripter

cs

 

여기까지 잘 따라오셨나요?ㅎㅎ

 

큰 어렴움이 없기 때문에, 천천히 따라 오시길 바랍니다.


여기까지 잘 따라하셨다면, 이제 다음으로 처음에 만들었던 Main 폼의 소스코드를 작성해 보도록 하겠습니다.


 

Main폼에서는 이제 “Show Image” 버튼을 클릭했을 때, 먼저 PictureBox 컨트롤에 이미지가 들어가게 되고, 그 다음으로 PcitureBox 컨트롤을 마우스로 더블클릭 했을 때, ZoomForm을 호출 하여 확대 된 이미지가 보여지게 끔 소스코드를 작성해 볼게요.


MainForm 소스 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace PictureBoxTest

{

    public partial class Form1 : Form

    {

        public string imagePath = string.Empty;

 

        public Form1()

        {

            InitializeComponent();

 

            uiBtn_ShowImage.Click += uiBtn_ShowImage_Click;

        }

 

        /// <summary>

        /// Show Image 버튼 클릭 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_ShowImage_Click(object sender, EventArgs e)

        {

            imagePath = @"C:\Users\winforsys\Desktop\test.png";

 

            //PictureBox 컨트롤에 넣을 이미지 경로\이미지이름 추가

            Image img = Image.FromFile(imagePath);

            //PictureBox 컨트롤에 이미지 넣기

            uiPb_Image.BackColor = Color.DimGray;

            uiPb_Image.SizeMode = PictureBoxSizeMode.Zoom;

            uiPb_Image.Image = img.GetThumbnailImage(150150nullIntPtr.Zero);

 

            //PictureBox 컨트롤 더블클릭 이벤트 선언

            uiPb_Image.DoubleClick += uiPb_Image_DoubleClick;

        }

 

        /// <summary>

        /// PictureBox 컨트롤 더블클릭 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiPb_Image_DoubleClick(object sender, EventArgs e)

        {

            ZoomForm zoomFrm = new ZoomForm();

            zoomFrm.file = imagePath;

 

            zoomFrm.ShowDialog();

        }

    }

}

 

Colored by Color Scripter

cs


실행 결과



위와 같이 이미지를 더블클릭 했을 때, ZoomForm이 제대로 호출 되면서 확대된 이미지가 제대로 나온 것을 확인 하실 수 있습니다.

 

감사합니다.^^

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY