Entwickler-Ecke

C# - Die Sprache - ColorDialog


chris85s - Di 30.11.10 11:51
Titel: ColorDialog
Hallo,

ich habe folgendes Problem:

In meinem Programm soll der Anwender aus dem colordialog eine Farbe auswählen.
Diese ausgewählte Farbe möchte ich anschließend in einem String speichern.

Daraus folgt schon mal das die ausgewählte Farbe eine Farbe mit einem Namen sein muss.
(Also z.b. Color = "Red" und nicht Color = (255, 0, 125)
Falls nämlich nur die RGB Werte vorhanden sind, kann ich die Farbe nicht in einen String speichern.

Somit müsste ich im colordialog für den Anwender nur Farben zur Auswahl stellen, welche auch einen Namen haben.
Ich hab bereits viel gegooglet aber nichts gefunden.
Hat jemand ne Idee wie ich das umsetzen könnte?

mfg


jaenicke - Di 30.11.10 12:14

user profile iconchris85s hat folgendes geschrieben Zum zitierten Posting springen:
Falls nämlich nur die RGB Werte vorhanden sind, kann ich die Farbe nicht in einen String speichern.
Gibt es dafür einen Grund, warum du das nicht machen kannst? :gruebel:


chris85s - Di 30.11.10 12:17

Naja wenn die Farbe keinen Namen (wie Red) hat sondern "nur" die RGB Werte, dann kann man natürlich auch keinen Farbnamen in einen String speichern, da es ja keinen Farbnamen gibt.

Daher sollen im colordialog nur diejenigen Farben angezeigt werden, welche eben einen Farbnamen haben.


jaenicke - Di 30.11.10 12:18

Keinen Farbnamen, nein. Aber die RGB-Werte schon.


chris85s - Di 30.11.10 12:21

sorry ich habe keine ahnung auf was du hinaus willst.
vielleicht könntest du ein bisschen ausführlicher schreiben.


Yogu - Di 30.11.10 14:11

Du könntest die Farbe doch z.B. nach dem HTML-Schema speichern: #8022FE. Oder ganz einfach, indem du die drei Farbkomponenten durch Kommata trennst: 221, 42, 142. Deiner Fantasie sind dabei keine Grenzen gesetzt ...


chris85s - Di 30.11.10 14:22

Das bringt mir leider nichts.
Ich benötige aus anderen gründen wirklich einen Farbnamen.

Deswegen darf der Anwender wirklich nur Farben auswählen zu denen der colordialog auch einen Farbnamen hinterlegt hat.

Also muss ich dafür sorgen das man eben nur genau diese Farben aus auswählen darf.

Gibt es den überhaupt die Möglichkeit den colordialog auf bestimmte Farben einzuschränken?
Wenn ja, wie?


Th69 - Di 30.11.10 14:35

Der ColorDialog selber kennt auch keine Farbnamen, sondern auch nur die Farben im RGB-Format.
Daher müßtest du selber ein Control/Dialog erzeugen, z.B. mittels einer Liste aus vorgegebenen Farben (du könntest z.B. die KnownColor-Enumeration verwenden).

(wobei ich den Sinn auch nicht verstehe, warum nur Farbnamen ausgewählt werden dürfen...)


chris85s - Do 02.12.10 16:44

Bin leider nicht weiter gekommen seit der letzten antwort.

Bitte schreibt nicht immer das ihr den Sinn nicht versteht warum es einen Namen zu der Farbe geben muss. Es ist leider so, ich kanns nicht ändern.

Deswegen bleibt mein Problem bestehen.

Der letzte Antworter meinte, dass ich am besten einen eigenen Dialog erstellen soll.

Aber wie erstelle ich den einen eigenen ColorDialog?
Hab im I-net nicht viel darüber gefunden.

Vllt hat jemand von euch ne Idee?


jaenicke - Do 02.12.10 16:49

Du erstellst ein neues Formular und packst da Felder mit den gewünschten Farben hinein. Entweder mit einfachen Panels oder selbst gezeichnet, je nachdem wie schön es aussehen soll.

Du kannst zum Beispiel eine externe Datei mit einer Farbliste benutzen, damit der Benutzer auch Farben ergänzen kann (für die er dann selbst Namen vergeben kann, wenn das so wichtig ist).


Th69 - Do 02.12.10 16:57

Hallo Chris,

meinst du so etwas ähnliches: http://www.codeproject.com/KB/combobox/colourpickercb.aspx ?

Du solltest sonst mal schreiben, woher die Farbnamen kommen (hast du eine feste Liste oder kann der User zu einer Farbe einen beliebigen Namen hinterlegen?).

P.S: Du weißt, daß es über 16 Mio. Farben im RGB-Format gibt? -)