将Xamarin.Forms.Color转换为平台特定的颜色

我正在寻找一种方法来将Xamarin.Forms.Color转换为平台特定的颜色。 例如Android的Android.Graphics.Color。

我看了Xamarin.Forms.Color的属性,像R,G和B.这些值只包含一个0或1,这样看起来似乎毫无价值。 有人经历过并解决过这个问题吗?

Solutions Collecting From Web of "将Xamarin.Forms.Color转换为平台特定的颜色"

我想你尝试在自定义渲染器中做到这一点。

在iOS中 ,你可以这样做:

UIColor uicolor = yourXFColor.ToUIColor (); 

在Android中:

 Android.Graphics.Color adColor = yourXFColor.ToAndroidColor (); 

不幸的是, WP的等效扩展方法并不公开,但是你可以这样做:

 System.Windows.Media.Color wpColor = System.Windows.Media.Color.FromArgb ( (byte)(yourXFColor.A * 255), (byte)(yourXFColor.R * 255), (byte)(yourXFColor.G * 255), (byte)(yourXFColor.B * 255)); 

然后最终:

 Brush brush = new SolidColorBrush (wpColor); 

目前,您可以使用Xamarin.Forms.Platform.Android中的“ToAndroid()”扩展方法来执行此操作。

 using Xamarin.Forms.Platform.Android; Android.Graphics.Color droidColor = formsColor.ToAndroid(); 

在这里回到先前的答案,但Xamarin现在已将ToAndroid()方法放在ColorExtensions辅助类中。

 using Xamarin.Forms.Platform.Android .... Android.Graphics.Color color = ColorExtensions.ToAndroid(formsColor); 

以下是Windows的一些方法:

以这个扩展为例:

 using System; namespace Xamarin.Forms.Platform.WinRT { public static class ColorExtensions { public static Windows.UI.Color ToWindows(this Xamarin.Forms.Color color) { return Windows.UI.Color.FromArgb(Convert.ToByte(color.A * 255), Convert.ToByte(color.R * 255), Convert.ToByte(color.G * 255), Convert.ToByte(color.B * 255)); } } } 

或者像这样直接使用Brush

 var converter = new ColorConverter(); Control.CurrentBrush = (SolidColorBrush) converter.Convert(Element.CurrentLineColor, null, null, null);