[Einsteiger] Frage zu verschachtelten Klassen und dem Werteaustaus

08/11/2008 - 21:01 von minime | Report spam
Hallo,

ich bin recht frisch in C# und habe eine recht einfache Frage. Ich möchte
eine Klasse
erstellen , die eine Farbe in verschiedenen Farbràumen beinhaltet und diese
bei Eingabe
untereinaner konvertiert. Nennen wir diese Klasse nColor.


public nColor myColor = new nColor();
public double Hue = 0;

myColor.aRGB.Set (255,255,255,255);
Hue = myColor.aHSV.Hue;



Soweit, so gut. Die grundlegende Logik bereitet mir keine Probleme und auch
nicht die
Konvertierung der Farbràume soll dass Thema sein, vielmehr die Struktur der
Klasse ansich.

Ich habe die Klasse verschachtelt erstellt, d.h. jeder Farbraum ist eine
Unterklasse.



public class nColor

{
private byte _a;
private byte _r;
private byte _g
private byte _b;

// Konstruktor und Funktionen zum Lesen/Schreiben der "BASIS" aRGB werte.

public rgbSpace RGB = new rgbSpace();
public hsvSpace HSV = new hsvSpace();

private class rgbSpace
{
private byte _rr;
private byte _rg
private byte _rb;

// Funktionen zum Lesen/Schreiben der rgbSpace werte und dem entsprechenden
setzen der "basis" rgb werte.
}

private class hsvSpace
{
private byte _hh;
private byte _hs
private byte _hv;
// Funktionen zum Lesen/Schreiben der hsvSpace werte und dem entsprechenden
setzen der "basis" rgb werte.
}

}


Nun zum Problem :

Wenn ich aus der Unterklasse hsvSpace auf die grundlegenden Werte
_a,_r,_g,_b zugreifen
möchte ,muss ich diese als Static deklarieren , was ja nicht ganz sinnig ist
, da ich ja gerne
mehr als eine Farbe definieren können möchte.

Wie gestalte ich also die Struktur der Klasse am besten ?

Nochmal die Logik der Klasse :

nColor
nColor.RGB
nColor.RGB.R
nColor.RGB.G
nColor.RGB.B
nColor.RGB.Set(r,g,b)
nColor.HSV
nColor.HSV.H
nColor.HSV.S
nColor.HSV.V
nColor.HSV.Set(h,s,v)

im code , soll sie dann folgendes können :

[1] public nColor Farbe = new nColor();
[2] public byte r = 0;
[3] Farbe.HSV.Set(289,0.25,0.75);
[3] r = Farbe.RGB.R;

Ich hoffe ich habe mich halbwegs verstàndlich ausgedrückt. Eventuelle Syntax
oder
Tippfehler bitte ignorieren , bin neu in C# und hab es net im im Compiler
getippt :).

Vielen Dank im Vorraus,

gruß,
minime
 

Lesen sie die antworten

#1 Peter Brightman
10/11/2008 - 00:13 | Warnen spam
minime schrieb:
Hallo,

ich bin recht frisch in C# und habe eine recht einfache Frage. Ich möchte
eine Klasse
erstellen , die eine Farbe in verschiedenen Farbràumen beinhaltet und diese
bei Eingabe
untereinaner konvertiert. Nennen wir diese Klasse nColor.



Erst mal würde ich die Struktur Color() benutzen.

Soweit, so gut. Die grundlegende Logik bereitet mir keine Probleme und auch
nicht die
Konvertierung der Farbràume soll dass Thema sein, vielmehr die Struktur der
Klasse ansich.

Ich habe die Klasse verschachtelt erstellt, d.h. jeder Farbraum ist eine
Unterklasse.



Du hast "inner" classes erstellt, das sind aber keine Unterklassen. Sind
ja nicht von einer anderen Klasse abgeleitet.

Verstehe nicht genau was Du willst, Color() hat doch statische Methoden
wie etwa FromArgb() mit welcher Du eine beliebige Farbe definieren
kannst. Oder willst Du eine Farbe über HSL bzw HSB Werte definieren?
Dann musst Du halt die Formel für die Umwandlung schreiben. Schau Dir
mal diese Seiten an:

http://richnewman.wordpress.com/200...is-part-2/
http://richnewman.wordpress.com/hslcolor-class/

oder diese hier:

http://www.bobpowell.net/RGBHSB.htm

Auch das hier ist interessant:

http://markusberg.de/?q=node/60

http://www.mycsharp.de/wbb2/thread.php?threadid`090

hth,

Peter

Ähnliche fragen