酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Convert: hex to Color, Color to hex / integer to Color, Color to integer

ColorオブジェクトとARGB値の変換のあれこれ

Hex形式のARGB値をColorオブジェクトへ変換する

#FFFF9900 という形式の色をColorオブジェクトへ変換するメソッドを用意します。

public Color getColorFromHexString(string s) {
    byte a = System.Convert.ToByte(s.Substring(0, 2), 16);
    byte r = System.Convert.ToByte(s.Substring(2, 2), 16);
    byte g = System.Convert.ToByte(s.Substring(4, 2), 16);
    byte b = System.Convert.ToByte(s.Substring(6, 2), 16);
    return Color.FromArgb(a, r, g, b);
}

実際にこのメソッドの使い方は、以下の通りです。

var hexString = "#FFFF9900";
// #を削ってからgetColorFromHexStringメソッドへ渡す
var color = getColorFromHexString(hexString.Substring(1, 8));

ColorオブジェクトからHex形式のARGB値へ変換する

var color = Colors.Blue;
var hexString = color.ToString();

ColorオブジェクトからInteger型のARGB値へ変換する

var color = Colors.Blue;
int intColor = color.A << 24 | color.R << 16 | color.G << 8 | color.B;

Integer型のARGB値からColorオブジェクトへ変換する

int intColor = 4278190335;
var color = Color.FromArgb((byte)((intColor >> 24) & 0xff), 
                          (byte)((intColor >> 16) & 0xff), 
                          (byte)((intColor >> 8) & 0xff), 
                          (byte)(intColor & 0xff));