2011-01-22 4 views
0

HSL 색상과 RGB 색상을 나타내는 C# 클래스를 작성하는 방법은 무엇입니까?HSL과 RGB 색상을 C# 클래스로 표현하는 방법은 무엇입니까?

일단 제가 갖게되면 각 클래스 속성을 출력하는 메소드를 추가 할 수 있습니까? ToString()에 대해 들었지만 사용 방법을 잘 모르겠습니다.

나는 학생이며 C#을 사용하는 방법을 배우려고하기 때문에 일부 샘플 코드는 매우 유용 할 것입니다. 감사!

+0

숙제 같습니다 ... 닫으려면 –

+0

난 그냥 HSLColor 클래스와 RGBColor 클래스를 작성하는 데 도움이 필요합니다 – PAPA78

+0

가능한 중복 [C#을 사용하여 RGB로 [HSL] (http://stackoverflow.com/questions/4770580/hsl) -to-rgb-using-c) –

답변

2

다른 사람들에게 코드를 작성하도록 요청하는 "질문"을 게시하면 사람들이 짜증을냅니다. 신규 사용자 의 질문이 많아서을 묻는 메시지가 표시되며 사용자도 역시 입니다. 바라기를 바꿔서 다른 사용자가 겪은 부정적 반응 중 일부를 downvoting, 투표 종료 또는 질문 삭제로 설명합니다. 나는 이것이 당신에게 여기에서 부정적인 경험을하지 않았 으면 좋겠다. 앞으로는 자신을 먼저 도우려는 증거를 보여 주면 사람들이 당신을 도울 의향이 있음을 알게 될 것입니다. 작성한 코드를 보여 주거나 (작동하지 않습니다.) 직접 문제를 해결하려고 시도한 몇 가지 가능한 방법을 제안하십시오. 대부분의 질문은 "너무 사소한"것이 아니라 진정한 질문입니다. 우리는 코드 작성 서비스가 아니지만 여전히 기꺼이 도와 드리겠습니다.

내가 말한 것처럼 내가 실제로 질문에 대답하려고 노력할 것입니다. 색상 및 색상 공간 변환을 다루는 코딩 질문을 좋아하기 때문에. 색상 공간을 변환하는 방법에 대한 질문은 이미 여기에서 여러 번 묻고 답했습니다. 예를 들어, I (및 몇몇 다른 사람들)는 알고리즘을 제공했습니다 (여러 언어로) here. 당신이 선택한 언어로 그 중 하나를 변환하는 것이 간단해야합니다.

"이 색 공간에서 값을 나타내는 클래스는 어떻게 작성해야합니까?"라는 말은 매우 간단합니다. 구글 검색은 이미 같은 일을 한 사람들의 몇몇 결과를 나타냈다. 개인적으로 매우 가벼운 객체이고 색상 값은 변경되지 않으므로 (변경되지 않는다는 의미이므로) 클래스가 아닌 구조 인을 만드는 것이 좋습니다. 이는 구조에 가장 적합합니다. 차이점에 대한 자세한 설명을 원하시면 that questionalready been askedanswered here as well입니다.

그러나 어느 쪽을 선택 하든지 최종 결과는 매우 유사합니다. 나는 이것이 프로그래밍 수업을위한 것이라면, 스스로 이것을 할 수 있기 위해 알아야 할 모든 것을 이미 배웠다고 가정합니다. 의미, 당신은 이미 private fields (멤버 변수), public 속성 및 메소드에 대해 배워야합니다. 3 가지 개인 필드가있는 구조를 만들어 각 색상 값을 나타냅니다. 색조 (H), 채도 (S) 및 밝기 (L). 개별 색상 값은 0과 100 또는 0과 360 사이의 정수이기 때문에 각각 Integer 유형이어야합니다. 최대한의 정확도를 염두에 둔 경우 유형을 Decimal으로 저장하고 대중에서 Integer으로 변환을 처리 할 수 ​​있습니다 그것들을 세상에 드러내는 속성들, 그러나 나는 이것이 여기에 필요하다는 것을 의심한다. 두 경우 모두 개인 필드를 세계에 공개하는 공개 속성을 만들어야합니다. 이것은 객체 지향 프로그래밍의 기본 개념이므로 새로운 것이 아닙니다. (그렇다면 지금 당장 중지하고 OOP에 대해 설명하는 책을 가져 가야합니다. 가서 Go를하지 마십시오. $ 200을 모으지 마십시오.) 해당 공공 재산은 Integer 유형이어야하며, 각각에 대해 3 개가 있어야합니다. 개별 색상 구성 요소 값, 그리고 그들은 (적어도 불변 구조를 생성하는 경우) 읽기 전용이어야합니다 (setter가 아닌 getter 만 포함).이런 식으로 뭔가 : 마지막으로

/// <summary> 
/// Represents an HSL color, composed of individual 
/// Hue, Saturation, and Lightness attributes. 
/// </summary> 
public struct HSLColor 
{ 
    private int _hue; 
    private int _saturation; 
    private int _lightness; 

    /// <summary> 
    /// The hue attribute of the color. 
    /// (This is a value, in degrees, from 0 to 360.) 
    /// </summary> 
    public int Hue 
    { 
     get { return _hue; } 
    } 

    /// <summary> 
    /// The saturation attribute of the color. 
    /// (This is a percentage between 0 and 100.) 
    /// </summary> 
    public int Saturation 
    { 
     get { return _saturation; } 
    } 

    /// <summary> 
    /// The lightness attribute of the color. 
    /// (This is a percentage between 0 and 100.) 
    /// </summary> 
    public int Lightness 
    { 
     get { return _lightness; } 
    } 
} 

, 당신은 당신이 ToString 메소드를 오버라이드 (override) 할 필요가 말한다. 이미 배웠으므로 .NET Framework의 모든 클래스는 Object에서 상속하므로이 메서드를 제공합니다. 물론 virtual으로 표시되어 있으므로이를 무시하고 직접 구현할 수 있습니다. 가장 어려운 부분은 반환 값이 어떤 모양인지 알아내는 것입니다. 색상을 트라이어드로 표현하여 세 개의 개별 구성 요소 값을 표시 할 수 있습니다. 그럼에도 불구하고 String.Format method을 사용해야합니다. 그러면 해당 객체의 값으로 대체되는 "형식 항목"을 포함한 문자열을 만들 수 있습니다. 예를 들어 다음과 같습니다.

/// <summary> 
/// Returns the "(HH, SS, LL)" representation of this HSLColor structure. 
/// </summary> 
public override string ToString() 
{ 
    return string.Format("({0}, {1}, {2})", 
         this.Hue, 
         this.Saturation, 
         this.Lightness); 
} 

시작하기에 충분합니다. I 매우은 여기에 제공된 코드를 복사하여 붙여 넣지 않는 것이 좋습니다. 당신은 이런 식으로 아무것도 배우지 못합니다. IDE를 실행하고 코드를 직접 작성한 다음 몇 가지 변형을 시도해보십시오. 그것이 어떻게 작동하는지, 내가 한 일과 어떻게 스스로 할 수 있는지를 이해했는지 확인하십시오. 행운을 빌어 요!

+0

고마워요. 코디 ... 와우, 너 정말 나 한테 잘 설명해 줬어. 신의 축복 – PAPA78