Frage

Wie würde ich eine Klasse in C# schreiben, die eine HSL -Farbe und eine RGB -Farbe darstellt?

Ist es dann möglich, eine Methode hinzuzufügen, die jede der Klassenattribute ausdruckt? Ich habe davon gehört ToString(), aber ich bin mir nicht sicher, wie ich es benutzen soll.

Ein Beispielcode wäre sehr nützlich, da ich ein Schüler bin und versuche zu lernen, wie man C#verwendet. Vielen Dank!

War es hilfreich?

Lösung

Die Leute ärgern sich, wenn Sie "Fragen" veröffentlichen, die andere dazu bitten, Code für Sie zu schreiben. Viele Fragen von neuen Benutzern erscheinen Um danach zu fragen, und Ihre tun dies sogar ausdrücklich. Hoffentlich erklärt dies einige der negativen Reaktionen, die Sie von anderen Benutzern begegnet sind, entweder bei der Downvoting, zum Abschluss oder zum Löschen Ihrer Fragen. Ich hoffe, das hat Ihnen hier keine so negative Erfahrung gemacht, dass Sie weggetrieben werden. In Zukunft werden Sie feststellen, dass die Menschen viel mehr bereit sind, Ihnen zu helfen, wenn Sie einige Beweise dafür zeigen, dass Sie versucht haben, sich selbst zu helfen. Zeigen Sie uns einen Code, den Sie geschrieben haben (aber nicht funktionieren), oder schlagen Sie einige Möglichkeiten vor, wie Sie versucht haben, das Problem selbst zu lösen. Die meisten Fragen sind nicht "zu trivial", sondern keine wirklichen Fragen. Wir sind kein Code -Schreibdienst, aber wir helfen immer noch gerne.

Davon abgesehen werde ich versuchen, die Frage wie in einem Kommentar weiter zu beantworten. Wenn ich nur, weil ich es liebe, Fragen zu codieren, die sich mit Farb- und Farbraumkonvertierungen befassen. Die Frage, wie man zwischen Farbräumen umgewandelt wird, wurde bereits mehrmals hier gestellt und beantwortet. Zum Beispiel stellte ich (und mehrere andere) einen Algorithmus zur Verfügung (in verschiedenen Sprachen) hier. Es sollte einfach sein, eines dieser Sprachen, die Sie wählen, in eine von ihnen gewählte Sprache umzuwandeln.

Was "Wie schreibe ich eine Klasse, um Werte in diesen Farbräumen darzustellen", ist das recht einfach. Eine Google -Suche hätte auch mehrere Ergebnisse von Personen erzielt, die bereits dasselbe getan hatten. Persönlich empfehle ich eine Erstellung eines Struktur, anstatt eine Klasse, weil es ein sehr leichtes Objekt und Farbwerte sind, sind unveränderlich (dh sie ändern sich nicht). Das passt perfekt zu einer Struktur, und wenn Sie mehr Erläuterung des Unterschieds wünschen, können Sie finden das Frage hat wurde bereits gefragt und auch hier beantwortet.

Aber was auch immer Sie wählen, das Endergebnis sieht sehr ähnlich aus. Ich nehme an, wenn dies für einen Programmierkurs gilt, wurde Ihnen bereits alles beigebracht, was Sie wissen müssen, um dies selbst zu tun. Das heißt, Sie sollten bereits private Felder (Mitgliedsvariablen), öffentliche Eigenschaften und Methoden erfahren haben. Sie erstellen zunächst eine Struktur mit 3 privaten Feldern, um die einzelnen Farbwerte darzustellen. Farbton (H), Sättigung (S) und Leichtigkeit (L). Sie sollten wahrscheinlich jeweils vom Typ sein Integer, weil die einzelnen Farbwerte ganze Zahlen zwischen 0 und 100 oder 0 und 360 sind. Wenn Sie sich um maximale Genauigkeit kümmern, können Sie sie als Typ speichern Decimal und die Konvertierung zu bewältigen Integer In den öffentlichen Immobilien, die sie der Welt aussetzen, aber ich bezweifle, dass dies hier notwendig ist. In beiden Fällen müssen Sie als nächstes die öffentlichen Immobilien erstellen, die Ihre privaten Felder der Welt aussetzen. Dies ist ein grundlegendes Konzept in der objektorientierten Programmierung und sollte nicht neu für Sie sein. (Wenn ja, müssen Sie jetzt wirklich aufhören und ein Buch erhalten, das Ihnen die OOP erklärt. Gehen Sie nicht, sammeln Sie nicht 200 US -Dollar.) Diese öffentlichen Immobilien sollten vom Typ sein Integer, Für jeden der individuellen Farbkomponentenwerte sollten 3 davon vorhanden sein, und sie sollten (zumindest wenn Sie eine unveränderliche Struktur erstellen) nur schreibgeschützt sein (nur einen Getter, nicht einen Setter). Etwas wie das:

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

Schließlich sagen Sie, Sie müssen die außerordentlich außer Kraft setzen ToString Methode. Wie Sie bereits gelernt haben sollten, wird diese Methode von jeder Klasse im .NET -Framework bereitgestellt, da sie von der Basis von der Basis geerbt wird Object. Natürlich ist es als markiert als virtual, Sie können es überschreiben und Ihre eigene Implementierung bereitstellen. Am schwierigsten ist es, herauszufinden, wie sein Rückgabewert aussehen sollte. Sie können die Farbe als Triade darstellen und die drei individuellen Komponentenwerte zeigen. Unabhängig davon müssen Sie das verwenden String.Format Methode, Sie können eine Zeichenfolge mit "Formatelemente" erstellen, die durch den Wert des entsprechenden Objekts ersetzt werden. So mache ich zum Beispiel: Wie ich es mache:

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

Das sollte ausreichen, um Ihnen den Einstieg zu erleichtern. ich höchst Ermutigen Sie Sie, den hier als Aufgabe bereitgestellten Code nicht nur zu kopieren und einfügen. Sie lernen so etwas auf diese Weise. Starten Sie Ihre IDE, schreiben Sie den Code selbst und probieren Sie einige verschiedene Variationen aus. Stellen Sie sicher, dass Sie verstehen, wie es funktioniert, was ich getan habe und wie Sie es selbst wieder tun können. Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top