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

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

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

  • React Native v Xamarin Forms - 选择跨平台应用程序环境
  • StackLayout宽度计算中的RelativeLayout
  • 为什么Xamarin.Forms显示一些标签(特别是在Android上)很慢?
  • Xamarin mediaPicker.TakePhotoAsync崩溃的应用程序
  • 如何使用Visual Studio从Xamarin.Forms项目生成.apk文件?
  • 如何隐藏使用Xamarin表单自定义渲染器的Android标签?
  • 从操作栏中删除图标xamarin
  • 为什么显示一些标签时Xamarin.Forms这么慢(特别是在Android上)?
  • 我想你尝试在自定义渲染器中做到这一点。

    在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);