Xamarin.Forms.Color to hex value

zperee picture zperee · Nov 30, 2016 · Viewed 13.5k times · Source

I have a Xamarin.Forms.Color and I want to convert it to a 'hex value'.

So far, I haven't found a solution to my problem.

My code is as follows:

foreach (var cell in Grid.Children)
{
    var pixel = new Pixel
    {
        XAttribute = cell.X ,
        YAttribute = cell.Y ,
        // I want to convert the color to a hex value here
        Color = cell.BackgroundColor
    };
}

Answer

Code Knox picture Code Knox · Apr 21, 2017

Just a quick fix, the last line is wrong.

Alpha channel comes before the other values:

string hex = String.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", alpha, red, green, blue);

and this is best for an extension method:

public static class ExtensionMethods
{
    public static string GetHexString(this Xamarin.Forms.Color color)
    {
        var red = (int)(color.R * 255);
        var green = (int)(color.G * 255);
        var blue = (int)(color.B * 255);
        var alpha = (int)(color.A * 255);
        var hex = $"#{alpha:X2}{red:X2}{green:X2}{blue:X2}";

        return hex;
    }
}