Преобразование Xamarin.Forms.Color в цвет платформы
Я ищу способ конвертировать Xamarin.Forms.Color в определенный платформой цвет. Например, Android.Graphics.Color для Android.
Я взглянул на свойства Xamarin.Forms.Color, такие как R, G и B. Значения содержат только 0 или 1, что кажется довольно бесполезным. Кто-то испытал и решил эту проблему раньше?
Ответы
Ответ 1
Я думаю, вы пытаетесь сделать это в пользовательском рендерере.
В 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);
Ответ 2
В настоящее время вы можете сделать это с помощью метода расширения ToAndroid() в Xamarin.Forms.Platform.Android.
using Xamarin.Forms.Platform.Android;
Android.Graphics.Color droidColor = formsColor.ToAndroid();
Ответ 3
Вот несколько подходов для 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);
Ответ 4
Отключение предыдущих ответов здесь, но Xamarin теперь разместил метод ToAndroid() в вспомогательном классе ColorExtensions.
using Xamarin.Forms.Platform.Android
....
Android.Graphics.Color color = ColorExtensions.ToAndroid(formsColor);
Ответ 5
Xamarin добавил ToWindowsColor()
(я думаю, в версии 3.6). ->
Тогда это просто нужно сделать.. YourColorObject.ToWindowsColor()
а затем у вас есть Windows.UI.Color