2016-11-30 17 views
5

私はXamarin.Forms.Colorを持っていて、それを '16進値'に変換したいと思います。Xamarin.Forms.Colorから16進値へ

これまでのところ、私の問題に対する解決策は見つかりませんでした。次のように

私のコードは次のとおりです。

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 

    }; 

} 

答えて

22

だけで簡単に修正、最後の行が間違っています。

アルファチャンネルが他の値の前に来る:

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

と、これは拡張メソッドのために最善である:

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; 
    } 
} 
7
 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); 
+0

コードノックスの答えは正しい構文です。 'Alpha'チャンネルが最初に来るはずです - https://developer.xamarin.com/api/type/Xamarin.Forms.Color/ – ethane