[C# 윈폼] Custom으로 그라데이션 패널(GradientPanel) 컨트롤 만들기


안녕하세요.

 

오늘은 C# 윈폼에서 그라데이션 패널 컨트롤을 Custom으로 만드는 방법에 대해서 알려드리려고 합니다.

 

기존의 Panel 컨트롤에서 BackColor로 색상을 지정할 순 있지만, 그라데이션 효과를 입힐 수는 없었는데요.

 

그라데이션 효과를 주면 시각적인 면에서 더 예뻐지는? 효과가 있기 때문에, 오늘은 직접 Custom으로 그라데이션패널 컨트롤을 만들어 보도록 하겠습니다.


 

바로 예제 코드를 작성해 보도록 할게요.

 

먼저, 빈 윈폼 프로젝트를 생성해 주시기 바랍니다.

 

빈 윈폼 프로젝트 생성



위와 같이 빈 윈폼 프로젝트를 생성 하였다면, 이제 GradientPanel 클래스를 하나 생성하여 아래와 같이 예제 코드를 작성해 주시기 바랍니다.

 

GradientPanel.cs


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

59

60

61

62

63

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace GradientPanelTest

{

    public class GradientPanel : Panel

    {

        [Browsable(true)]

        public Color GraColorA { get; set; }

 

        [Browsable(true)]

        public Color GraColorB { get; set; }

 

        [Browsable(true)]

        public LinearGradientMode GradientFillStyle { get; set; }

 

        private Brush gradientBrush;

 

        public GradientPanel()

        {

            handlerGradientChanged = new EventHandler(GradientChanged);

            ResizeRedraw = true;

        }

 

        private EventHandler handlerGradientChanged;

 

        protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs e)

        {

            gradientBrush = 

new LinearGradientBrush(ClientRectangle, GraColorA, GraColorB, GradientFillStyle);

 

            e.Graphics.FillRectangle(gradientBrush, ClientRectangle);

        }

 

        protected override void Dispose(bool disposing)

        {

            if (disposing)

            {

                if (gradientBrush != null) gradientBrush.Dispose();

            }

            base.Dispose(disposing);

        }

 

        protected override void OnScroll(ScrollEventArgs se)

        {

            Invalidate();

        }

 

        private void GradientChanged(object sender, EventArgs e)

        {

            if (gradientBrush != null) gradientBrush.Dispose();

            gradientBrush = null;

            Invalidate();

        }

    }

}

 

Colored by Color Scripter

cs

 

위와 같이 코드를 작성하였다면, 전체 프로젝트 솔루션 빌드를 한번 해주시기 바랍니다.

 

그럼 도구상자에 아래와 같이 “GradientPanel”컨트롤이 생성된 것을 확인하실 수 있습니다.



위와 같이 생성된 GradientPanel 컨트롤을 빈 윈폼 프로젝트에 생성해 주시기 바랍니다.


 

그라데이션패널 컨트롤 배치 및 색상 설정



 

위와 같이 생성한 GradientPanel 컨트롤을 윈폼에 배치해 주시고, 속성에서 그라데이션 컬러 A, B를 설정해 주시기 바랍니다.

 

저는 예제로 Orange, Blue 컬러 2가지 색상을 선택하였습니다.

 

그리고 이제 프로그램 실행을 시키면 아래와 같이 그라데이션 효과가 제대로 나타나는 것을 확인하실 수 있습니다.

 

실행 결과



이로써, 오늘은 Custom으로 GradientPanel 컨트롤을 만들어 보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY