loading

프로그래밍/C#

[C#] 프로그램 내에서 임의로 배경색 변경하기

침착곰 2021. 5. 28. 12:28
반응형

안녕하세요

이번 포스팅은 프로그램 내에서 버튼을 활용하여 Control의 배경색을 임의로 변경하는 방법에 대해서 알아보겠습니다

 

목차

전체 소스
디자인
RGB 색상으로 변경하기
시스템 색상으로 변경하기
전체 코드
실행화면

 


전체 소스

프로그램 전체 소스입니다

포스팅만으로 이해가 잘 안 되는 분들은 다운로드하여 참고 바랍니다

BGChange.zip
0.07MB

 


디자인

색상을 변경할 TextBox, Button, ComboBox를 추가해주었습니다

BackColor를 변경할 Panel도 추가해줍니다

 


RGB 색상으로 변경하기

// 변경 버튼 클릭 이벤트
private void btnChange_Click(object sender, EventArgs e)
{
    // 범위를 벗어나지 않은 경우만 실행
    if (int.Parse(txtR.Text) <= 255 && int.Parse(txtG.Text) <= 255 && int.Parse(txtR.Text) <= 255
        && int.Parse(txtR.Text) >= 0 && int.Parse(txtG.Text) >= 0 && int.Parse(txtR.Text) >= 0)
    {
        this.panPanel.BackColor = Color.FromArgb(int.Parse(txtR.Text), int.Parse(txtG.Text), int.Parse(txtB.Text));
    }
}

Color.FromArgb를 사용하여 R, G, B값을 순차적으로 입력하여 변경해줍니다

0 ~ 255 사이의 숫자를 입력하지 않으면 범위 초과 에러가 뜨므로 if문으로 처리해줬습니다

 

// R 숫자만 입력되도록 변경
private void txtR_KeyPress(object sender, KeyPressEventArgs e)
{
    // 숫자가 아닌 경우 작동 종료
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
    {
        e.Handled = true;
    }

    // "."을 입력하였으면 작동 종료
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

// G 숫자만 입력되도록 변경
private void txtG_KeyPress(object sender, KeyPressEventArgs e)
{
    // 숫자가 아닌 경우 작동 종료
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
    {
        e.Handled = true;
    }

    // "."을 입력하였으면 작동 종료
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

// B 숫자만 입력되도록 변경
private void txtB_KeyPress(object sender, KeyPressEventArgs e)
{
    // 숫자가 아닌 경우 작동 종료
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
    {
        e.Handled = true;
    }

    // "."을 입력하였으면 작동 종료
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

추가사항으로 RGB 값에는 숫자만 입력을 할 수 있도록 KeyPress에서 처리를 해줬습니다

 


시스템 색상으로 변경하기

// 변경2 버튼 클릭 이벤트
private void btnChange2_Click(object sender, EventArgs e)
{
    if (this.cboColor.Text == "Black")
        this.panPanel.BackColor = Color.Black;
    else if (this.cboColor.Text == "White")
        this.panPanel.BackColor = Color.White;
}

콤보박스를 사용하여 시스템 색상을 직접 호출하여 BackColor을 변경해줍니다

 


전체 코드

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

namespace BGChange
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // 변경 버튼 클릭 이벤트
        private void btnChange_Click(object sender, EventArgs e)
        {
            // 범위를 벗어나지 않은 경우만 실행
            if (int.Parse(txtR.Text) <= 255 && int.Parse(txtG.Text) <= 255 && int.Parse(txtR.Text) <= 255
                && int.Parse(txtR.Text) >= 0 && int.Parse(txtG.Text) >= 0 && int.Parse(txtR.Text) >= 0)
            {
                this.panPanel.BackColor = Color.FromArgb(int.Parse(txtR.Text), int.Parse(txtG.Text), int.Parse(txtB.Text));
            }
        }

        // 변경2 버튼 클릭 이벤트
        private void btnChange2_Click(object sender, EventArgs e)
        {
            if (this.cboColor.Text == "Black")
                this.panPanel.BackColor = Color.Black;
            else if (this.cboColor.Text == "White")
                this.panPanel.BackColor = Color.White;
        }

        // R 숫자만 입력되도록 변경
        private void txtR_KeyPress(object sender, KeyPressEventArgs e)
        {
            // 숫자가 아닌 경우 작동 종료
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // "."을 입력하였으면 작동 종료
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }

        // G 숫자만 입력되도록 변경
        private void txtG_KeyPress(object sender, KeyPressEventArgs e)
        {
            // 숫자가 아닌 경우 작동 종료
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // "."을 입력하였으면 작동 종료
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }

        // B 숫자만 입력되도록 변경
        private void txtB_KeyPress(object sender, KeyPressEventArgs e)
        {
            // 숫자가 아닌 경우 작동 종료
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // "."을 입력하였으면 작동 종료
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }
    }
}

프로그램 전체 코드입니다!

 


실행화면

프로그램을 실행하여 "변경"버튼을 눌러 색상을 변경한 화면입니다

여기까지 C# 윈폼의 임의의 RGB 값 및 시스템 색상을 선택하여 BackColor를 변경하는 방법에 대해서 알아봤습니다

C# 공부를 하는 분들께 참고가 되었으면 좋겠습니다

반응형
그리드형