첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형
using System;
using System.Drawing;

/// <summary>
/// RGB 색상
/// </summary>
public class RGB
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region Field

    /// <summary>
    /// 빨강색 채널
    /// </summary>
    public const short R = 2;

    /// <summary>
    /// 녹색 채널
    /// </summary>
    public const short G = 1;

    /// <summary>
    /// 파랑색 채널
    /// </summary>
    public const short B = 0;

    /// <summary>
    /// 빨강색
    /// </summary>
    public byte Red;

    /// <summary>
    /// 녹색
    /// </summary>
    public byte Green;

    /// <summary>
    /// 파랑색
    /// </summary>
    public byte Blue;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 색상 - Color

    /// <summary>
    /// 색상
    /// </summary>
    public Color Color
    {
        get
        {
            return Color.FromArgb(Red, Green, Blue);
        }
        set
        {
            Red   = value.R;
            Green = value.G;
            Blue  = value.B;
        }
    }

    #endregion

    #region 회색조 색상 - GrayscaleColor

    /// <summary>
    /// 회색조 색상
    /// </summary>
    public Color GrayscaleColor
    {
        get
        {
            int luminance = (int)(0.299d * Red + 0.587d * Green + 0.114d * Blue);

            return Color.FromArgb(luminance, luminance, luminance);
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - RGB()

    /// <summary>
    /// 생성자
    /// </summary>
    public RGB()
    {
    }

    #endregion

    #region 생성자 - RGB(red, green, blue)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="red">빨강색</param>
    /// <param name="green">녹색</param>
    /// <param name="blue">파랑색</param>
    public RGB(byte red, byte green, byte blue)
    {
        Red   = red;
        Green = green;
        Blue  = blue;
    }

    #endregion

    #region 생성자 - RGB(color)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="color">색상</param>
    public RGB(Color color)
    {
        Red   = color.R;
        Green = color.G;
        Blue  = color.B;
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 문자열 만들기 - ToString()

    /// <summary>
    /// 문자열 만들기
    /// </summary>
    /// <returns>문자열</returns>
    public override string ToString()
    {
        return string.Format("RGB [Red={0}, Green={1}, Blue={2}]", Red, Green, Blue);
    }

    #endregion
}
728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요