Преобразование Xamarin.Forms.Color в цвет конкретной платформы

Я ищу способ конвертировать Xamarin.Forms.Color в определенный платформой цвет. Например, Android.Graphics.Color для Android.

Я взглянул на свойства 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); 

В настоящее время вы можете сделать это с помощью метода расширения ToAndroid () в Xamarin.Forms.Platform.Android.

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