Problem bei der Umwandlung von RGB nach HexaDezimal

rueD

Grünschnabel
Hallo !
Ich habe mir ein kleines Prog geschrieben mit dem ich mit hillfe von Scrollbalken das
Value von den 3 RGB Farbwerten verändern und mir somit eine Farbe aussuchen kann, die
dann in den passenden HexaDezimalwert umgewandelt wird.

this->Hexatextbox->Text = L"#" + Convert::ToString(red,16) + Convert::ToString(green,16) + Convert::ToString(blue,16);

Soweit alles klar funktioniert Super. Dennoch hab ich das Problem das für alle
Werte die kleiner sind als 15 ein einstelligen Wert ausgegeben wird. D.h. Wenn:
Rot=7 und Grün=13 und Blau=10 erhalte ich #7da - der korekte Wert wäre aber
#070d0a. Wie schaffe ich es das ich mittels einer If Anweisung die '0' vor dem
Wert setzen kann? :confused:

:google:<-Hat nicht viel gebracht!

Mfg rueD..
 
z. B. CString::Format( ... );

kannst du so schöne Dinge machen wie z. B. Format( "%02i", intValue ).
Ausgabe bei:
intValue = 15 => 15,bei
intValue = 5 => 05


grüssle :)
 
Hallo,

hier geht's wohl eher um Managed C++. Da schaut die Format-Syntax etwas anders aus:
C++:
this->Hexatextbox->Text = System::String::Format("#{0:X2}{1:X2}{2:X2}", red, green, blue);
Gruß
MCoder
 
Hallo ! Erstmal Danke für eure antworten. Jedoch bin ich damit ein wenig überfordert!

Ich hab mich grad mal bei MSDN schlau gemacht weil die String::Format Methode kannt ich bisher noch nicht.

Ersetzt das Formatelement in einem angegebenen String durch den Text, der dem Wert einer angegebenen Object-Instanz entspricht.

Soweit klar! Aber was erreiche ich dann mit :

"#{0:X2}{1:X2}{2:X2}",

Mfg rueD
 
Hallo,

das ist der sogenannte Formatstring. Variable Werte stehen innerhalb geschweifter Klammern. Vor dem Doppelpunkt steht die laufende Nummer (beginnend mit 0) und danach die Formatierung (optional). Im konkreten Fall steht das "X" für eine hexadezimale Ausgabe mit Grossbuchstaben und die "2" für die Mindestlänge.

Gruß
MCoder
 
Großartig ! Dankeschön!

Ich hab schon befürchtet das ich 8 if anweisung schreiben muß, für jeden Fall eine aber das hat sich somit erledigt. Super

MfG rueD
 

Neue Beiträge

Zurück