如何将HSL和RGB颜色表示为C#中的类?

如何将HSL和RGB颜色表示为C#中的类?,c#,.net,class,colors,color-space,C#,.net,Class,Colors,Color Space,我如何用C语言编写一个表示HSL颜色和RGB颜色的类 一旦我有了它,是否可以添加一个打印出每个类属性的方法?我听说过ToString(),但我不知道如何使用它 一些示例代码将非常有用,因为我是一名学生,正在努力学习如何使用C。谢谢 当您发布“问题”要求他人为您编写代码时,人们会感到恼火。新用户提出的许多问题似乎都在问这个问题,而你的问题甚至明确地问到了这一点。希望这能解释你从其他用户那里遇到的一些负面反应,无论是在向下投票,投票结束,甚至是删除你的问题。我希望这不会给你带来如此负面的体验,以至于

我如何用C语言编写一个表示HSL颜色和RGB颜色的类

一旦我有了它,是否可以添加一个打印出每个类属性的方法?我听说过
ToString()
,但我不知道如何使用它


一些示例代码将非常有用,因为我是一名学生,正在努力学习如何使用C。谢谢

当您发布“问题”要求他人为您编写代码时,人们会感到恼火。新用户提出的许多问题似乎都在问这个问题,而你的问题甚至明确地问到了这一点。希望这能解释你从其他用户那里遇到的一些负面反应,无论是在向下投票,投票结束,甚至是删除你的问题。我希望这不会给你带来如此负面的体验,以至于你被赶走。将来,你会发现,如果你先展示一些试图帮助自己的证据,人们会更愿意帮助你。向我们展示一些您已经编写(但不起作用)的代码,或者建议一些您自己尝试解决问题的可能方法。大多数问题不是“太琐碎”,而是不是真正的问题。我们不是一个代码编写服务,但我们仍然乐意提供帮助

话虽如此,我还是会像在评论中那样继续回答这个问题。因为我喜欢处理颜色和颜色空间转换的编码问题。关于如何在颜色空间之间转换的问题,在这里已经被多次提出和回答。例如,我(和其他几个人)提供了一个算法(用几种不同的语言)。将其中任何一种转换为您选择的任何语言都应该很简单

至于“如何编写一个类来表示这些颜色空间中的值”,这很简单。谷歌搜索也会发现一些已经做过同样事情的人的搜索结果。就个人而言,我建议创建一个结构,而不是一个类,因为它是一个非常轻量级的对象,颜色值是不可变的(这意味着它们不会改变)。这是一个完美的结构适合,如果你想更多的差异解释,你可以找到有和

但无论你选择哪一个,最终结果看起来都非常相似。我假设,如果这是一门编程课,你已经学到了你自己能够做到这一点所需要知道的一切。也就是说,您应该已经了解了私有字段(成员变量)、公共属性和方法。首先,您将创建一个包含3个专用字段的结构,以表示每个颜色值;色调(H)、饱和度(S)和亮度(L)。它们可能都是
整数类型
,因为单个颜色值是介于0和100之间或0和360之间的整数。如果您关心最大的准确性,您可以将它们存储为type
Decimal
,并在公开它们的公共属性中处理到
Integer
的转换,但我怀疑这在这里是必要的。在这两种情况下,您接下来都需要创建那些向世界公开您的私有字段的公共属性。这是面向对象编程中的一个基本概念,对您来说不应该是新概念。(如果是的话,你现在真的需要停下来买一本解释OOP的书。不要过关,不要收200美元。)这些公共属性应该是
Integer
,每个颜色分量值应该有3个属性,并且它们应该是只读的(至少如果你正在创建一个不可变的结构)(只包括一个getter,而不是setter)。类似于:

/// <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; }
    }
}

这应该足以让你开始。我强烈建议你不要只是复制和粘贴这里提供的代码作为你的作业。你不是通过这种方式学习任何东西。启动你的IDE,自己编写代码,并尝试几种不同的变体。确保你了解它是如何工作的,我做了什么,以及你可以如何再次这样做n靠你自己。祝你好运!

看起来像是家庭作业……投票结束我只需要帮助写HSLColor类和RGBColor类@papa的可能副本你已经结束了一次这个问题-这不是一个暗示。因为他们说,我没有问任何问题,这次我问的正是我需要的谢谢Cody..哇,你真的很好向我解释好了,我现在完全明白了…非常感谢,老兄…上帝保佑你
/// <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);
}