Преобразование 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