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

时间:2014-08-07 06:20:35

标签: android ios colors xamarin xamarin.forms

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

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

6 个答案:

答案 0 :(得分:51)

我猜您尝试在自定义渲染器中执行此操作。

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

答案 1 :(得分:12)

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

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

答案 2 :(得分:3)

以下是Windows的一些方法:

拿走,例如this扩展程序:

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

if (myAssessments[orderId].report &&
    myAssessments[orderId].report[categoryProductCode] &&
    myAssessments[orderId].report[categoryProductCode].categories &&
    myAssessments[orderId].report[categoryProductCode].categories[comment.categoryId]) {

    // Do something related to
    // myAssessments[orderId].report[categoryProductCode].categories[comment.categoryId]
}

答案 3 :(得分:2)

在此处取消之前的答案,但Xamarin现在已将ToAndroid()方法放在ColorExtensions帮助程序类中。

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

答案 4 :(得分:0)

Xamarin have added ToWindowsColor()(我认为在3.6版本中)。 ->

然后只需要做。.YourColorObject.ToWindowsColor()然后您有了一个Windows.UI.Color

答案 5 :(得分:0)

使用 from operator import sub import numpy as np import math import pandas as pd from scipy import special as sp noerror = pd.read_csv(r"C:\Users\nickc\Desktop\School\20 - 21\4810\profile_data_without_errors_activity_2.csv") werror = pd.read_csv(r"C:\Users\nickc\Desktop\School\20 - 21\4810\profile_data_with_errors_activity_2.csv") bladespace = noerror["x"] voltage = noerror["y"] w = np.arange(.0105, .011, .001) b = np.arange(.00005, .0004, .0005) chi2 = sum( [map( sub, voltage, 1.4375 * math.erf((np.sqrt(2) / w) * [i - b for i in bladespace]) + 1.45195) ** 2]) 的解决方案:

Xamarin.Essentials

链接:https://docs.microsoft.com/en-us/xamarin/essentials/color-converters