■ Panel 클래스를 사용해 그라디언트 패널를 만드는 방법을 보여준다.
▶ 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 |
using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace TestProject { /// <summary> /// 그라디언트 패널 /// </summary> public class GradationPanel : Panel { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region 왼쪽 색상 - LeftColor /// <summary> /// 왼쪽 색상 /// </summary> public Color LeftColor { get; set; } #endregion #region 오른쪽 색상 - RightColor /// <summary> /// 오른쪽 색상 /// </summary> public Color RightColor { get; set; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Protected #region 페인트시 처리하기 - OnPaint(e) /// <summary> /// 페인트시 처리하기 /// </summary> /// <param name="e">이벤트 인자</param> protected override void OnPaint(PaintEventArgs e) { LinearGradientBrush brush = new LinearGradientBrush ( ClientRectangle, LeftColor, RightColor, 0f ); e.Graphics.FillRectangle(brush, ClientRectangle); base.OnPaint(e); } #endregion } } |
▶ MainForm.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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
using System; using System.Drawing; using System.Windows.Forms; namespace TestProject { /// <summary> /// 메인 폼 /// </summary> public partial class MainForm : Form { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainForm() /// <summary> /// 생성자 /// </summary> public MainForm() { InitializeComponent(); this.leftButton.Click += leftButton_Click; this.rightButton.Click += rightButton_Click; SetLeftColor(Color.Yellow); SetRightColor(Color.Orange); } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private //////////////////////////////////////////////////////////////////////////////// Event #region 왼쪽 버튼 클릭시 처리하기 - leftButton_Click(sender, e) /// <summary> /// 왼쪽 버튼 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void leftButton_Click(object sender, EventArgs e) { Color color; if(ShowColorDialog(out color)) { SetLeftColor(color); } } #endregion #region 오른쪽 버튼 클릭시 처리하기 - rightButton_Click(sender, e) /// <summary> /// 오른쪽 버튼 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void rightButton_Click(object sender, EventArgs e) { Color color; if(ShowColorDialog(out color)) { SetRightColor(color); } } #endregion //////////////////////////////////////////////////////////////////////////////// Function #region 색상 대화 상자 표시하기 - ShowColorDialog(color) /// <summary> /// 색상 대화 상자 표시하기 /// </summary> /// <param name="color">색상</param> /// <returns>처리 결과</returns> public bool ShowColorDialog(out Color color) { color = new Color(); ColorDialog colorDialog = new ColorDialog(); if(colorDialog.ShowDialog() == DialogResult.OK) { color = colorDialog.Color; return true; } return false; } #endregion #region 왼쪽 색상 설정하기 - SetLeftColor(color) /// <summary> /// 왼쪽 색상 설정하기 /// </summary> /// <param name="color">색상</param> private void SetLeftColor(Color color) { this.gradationPanel.LeftColor = color; this.leftButton.BackColor = color; this.gradationPanel.Refresh(); } #endregion #region 오른쪽 색상 설정하기 - SetRightColor(color) /// <summary> /// 오른쪽 색상 설정하기 /// </summary> /// <param name="color">색상</param> private void SetRightColor(Color color) { this.gradationPanel.RightColor = color; this.rightButton.BackColor = color; this.gradationPanel.Refresh(); } #endregion } } |