C# Frage zu Color.FromArgb("hex-Wert")

OP #3374818
Lesenswert?

Hallo zusammen

Ich möchte eine Color-Variablen einen
Farbwert als Hex-Zahl zuweisen,
so wie in diesem Beispiel
1
  Color Farb2 = Color.FromArgb(0xFF665544);

Das geht aber nicht. Es wird eine Vorzeichenlose
int-Zahl erwartet.
Die ersten beiden Ziffern müssen aber FF bleiben,
da dies der Transparentwert ist und ich einen
Vollton haben will.

Ich könnte es auch so machen:

1
  Color Farb2 = Color.FromArgb(255, 102, 85, 68);

Aber dann habe ich vier Variablen pro Farbwert.

Wer kennt sich aus?
#3374827
Lesenswert?

Reinhard ## schrieb:
> Ich möchte eine Color-Variablen einen
> Farbwert als Hex-Zahl zuweisen,
> so wie in diesem Beispiel
>   Color Farb2 = Color.FromArgb(0xFF665544);
>
> Das geht aber nicht. ...
Klar, dass das nicht geht. Das Literal 0xFF665544 ist vom Typ uint 
(System.UInt32), während die Methode Color.FromArgb einen int 
(System.Int32) erwartet. Implizite Konvertierung von int nach uint und 
umgekehrt gibt es in C# nicht.

Wenn Du das Literal explizit castest, dann klappt der Aufruf ohne 
Beschwerden seitens des Compilers:
1
    Color Farb2 = Color.FromArgb((int)0xFF665544);

Alternativ könntest Du auch die Convert-Klasse bemühen:
1
   ... Convert.ToInt32(0xFF665544) ...

Grüße
Markus
#3374831
Lesenswert?

Markus Volz schrieb:
> Wenn Du das Literal explizit castest, dann klappt der Aufruf ohne
> Beschwerden seitens des Compilers:

Das funktioniert nicht! Der Compiler sollte sich beschweren:
"Constant value '4284896580' cannot be converted to a 'int' (use 
'unchecked' syntax to override)"

Und die Meldung liefert ja schon die Lösung:
1
unchecked
2
{
3
  var c = Color.FromArgb((int) 0xFF665544);
4
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren