본문 바로가기
C#/Common

[C#] Color

by 샤나엘 2018. 3. 20.
반응형

C# Color 객체에 대한 포스팅입니다.

 

UI 개발을 하다보면 객체에 원하는 색으로 표시해야 할 경우가 있습니다.

글자 색이라던가, 객체의 색이라던가..

 

이럴 경우에 System.Drawing.Color 객체를 사용해서 색을 표현하면 됩니다.

 

Color 객체를 살펴보면 미리 정의되어 있는 색도 있고,

사용자가 색을 만들어서 사용할 수도 있도록 되어 있습니다.

 

사용자가 색을 만들경우 주로 사용하는 함수가 

 

   
public static Color FromArgb(int red, int green, int blue);

 

 

위 함수입니다.

 

매개 변수인 red, green, blue에는 0 ~ 255 사이의 값을 넣을 수 있고

해당 값을 어떻게 넣느냐에 따라 색이 조합되어 나타나게 됩니다.

 

 

아래의 예제는 red, green, blue 값을 입력받아

 

panel 배경색을 바꾸는 간단한 예제입니다.

 

 

[소스코드파일]

Color.zip

 

 

 

[소스코드]

   
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void BtnRun_Click(object sender, EventArgs e)
        {
            int red = (int)this.numericUpDownRed.Value;
            int green = (int)this.numericUpDownGreen.Value;
            int blue = (int)this.numericUpDownBlue.Value;
            
            System.Drawing.Color color = System.Drawing.Color.FromArgb(red, green, blue);

            this.splitContainer1.Panel2.BackColor = color;
        }
    }
}

 

 

[실행결과]

 

 

 

 

 

 

 

 

위 예제를 통해 색상을 미리 확인 후 원하는 색을 찾아 표시하면 좋을 것 같습니다.

 

[※ 참고1. Color 객체 비교]

Color 객체가 동일한 객체인지 비교하는 경우가 있을 텐데, 동일한 R, G, B 값을 가지는 경우라도 어떻게 비교하느냐에 따라 다른 객체로 판단될 경우가 있습니다.

 

            System.Drawing.Color a = System.Drawing.Color.FromArgb(0, 0, 255);
            System.Drawing.Color b = System.Drawing.Color.Blue;

 

위 와 같이 a, b는 동일한 Blue 라는 동일한 값을 가지지만 서로 다른 객체로 인식합니다.

 

아래 조사식을 보면 a == b 는 false 로 판단하고,

a.R == b.R && a.G == b.G && a.B == b.B 로 비교해야 true로 판단합니다.

 

 

객체 비교할 때 유의해서 사용해야 할 것 같습니다.


 

 

[※ 참고2. 색상표]

http://www.flounder.com/csharp_color_table.htm

 

 


반응형

'C# > Common' 카테고리의 다른 글

C# Dictionary sort 정렬하는 방법  (0) 2021.06.07
[C#] Enum foreach - Enum(열거형) 반복문 사용법  (0) 2018.04.05
[C#] Dictionary 사용예제  (0) 2018.04.02
[C#] DataTable 사용법  (0) 2018.03.28
[C#] Random Class 사용  (0) 2018.03.20

댓글