반응형
안녕하세요
이번 포스팅은 프로그램 내에서 버튼을 활용하여 Control의 배경색을 임의로 변경하는 방법에 대해서 알아보겠습니다
목차
전체 소스
디자인
RGB 색상으로 변경하기
시스템 색상으로 변경하기
전체 코드
실행화면
전체 소스
프로그램 전체 소스입니다
포스팅만으로 이해가 잘 안 되는 분들은 다운로드하여 참고 바랍니다
디자인
색상을 변경할 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# 공부를 하는 분들께 참고가 되었으면 좋겠습니다
반응형
그리드형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 선택한 파일로 배경이미지 변경하기 (0) | 2021.05.28 |
---|---|
[C#] 마우스 위치에 따라서 Control의 배경색상 변경하기 (0) | 2021.05.28 |
[C# WinForm] Control 배경 변경하기 (0) | 2021.05.26 |
[C# WinForm] TabIndex란? / 손 쉽게 TabIndex 설정하기 (0) | 2021.05.17 |
C# region에 대해서 알아보자! (1) | 2021.05.16 |