2016-11-30 119 views
5

我有一个Xamarin.Forms.Color,我想将它转换为'十六进制值'。Xamarin.Forms.Color到十六进制值

到目前为止,我还没有找到解决我的问题。

我的代码如下:

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

只是权宜之计,最后一行是错误的。

Alpha通道而来的其他值前:

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