wake-up-neo.com

Xamarin.Forms.Color to hex value

Ich habe ein Xamarin.Forms.Color und möchte es in einen Hex-Wert umwandeln.

Bisher habe ich keine Lösung für mein Problem gefunden.

Mein Code lautet wie folgt:

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

    };

}
12
zperee

Nur eine schnelle Lösung, die letzte Zeile ist falsch.

Der Alphakanal steht vor den anderen Werten:

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

und das ist am besten für eine Erweiterungsmethode:

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;
    }
}
39
Code Knox
        var color = Xamarin.Forms.Color.Orange;
        int red = (int) (color.R * 255);
        int green = (int) (color.G * 255);
        int blue = (int) (color.B * 255);
        int alpha = (int)(color.A * 255);
        string hex = String.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", red, green, blue, alpha);
10
Jason

etwas spät, aber so mache ich das in Xamarin Forms (die Xamarin.Forms.Color-Klasse macht bereits eine FromHex (string) -Methode verfügbar. 

public string ColorHexa { get; set; }
public Color Color
{
    get => Color.FromHex(ColorHexa);
    set => ColorHexa = value.ToHexString();
}

Mit dieser Erweiterung:

public static class ColorExtensions
{
    public static string ToHexString(this Color color, bool outputAlpha = true)
    {
        string DoubleToHex(double value)
        {
            return string.Format("{0:X2}", (int)value * 255);
        }

        string hex = "#";
        if (outputAlpha) hex += DoubleToHex(color.A);
        return $"{hex}{DoubleToHex(color.R)}{DoubleToHex(color.G)}{DoubleToHex(color.B)}";
    }
}
0
Nk54