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

Posted

技术标签:

【中文标题】将 Xamarin.Forms.Color 转换为平台特定颜色【英文标题】:Convert Xamarin.Forms.Color to platform specific color 【发布时间】:2014-09-30 06:42:21 【问题描述】:

我正在寻找一种的方法。例如 android 的 Android.Graphics.Color。

我查看了 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);

【讨论】:

谢谢!它正在工作。我在一个自定义渲染器使用的类中尝试它。现在我正在转换颜色@渲染器并将平台特定颜色传递给对象。 我想xpColor@你答案的最后一行是错字? 仅供参考,Xamarin.Forms 上缺少扩展使我将其添加到 Xamarin.Forms.Labs(开源社区 XF 附加组件):github.com/XForms/Xamarin-Forms-Labs/blob/master/src/… @StephaneDelcroix 我找不到像ToAndroidColor ();这样的扩展名 现在看来,将Xamarin.Forms.Color转换为Android颜色的扩展方法是:XFColor.ToAndroid();【参考方案2】:

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

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

【讨论】:

【参考方案3】:

此处不再使用以前的答案,但 Xamarin 现在已将 ToAndroid() 方法放置在 ColorExtensions 帮助器类中。

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

【讨论】:

【参考方案4】:

以下是一些适用于 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,比如here:

var converter = new ColorConverter();

Control.CurrentBrush =
    (SolidColorBrush)
        converter.Convert(Element.CurrentLineColor, null, null, null);

【讨论】:

【参考方案5】:

Xamarin have addedToWindowsColor()(我认为是 3.6 版本)。 ->

那么只需要做..YourColorObject.ToWindowsColor() 然后你就有了Windows.UI.Color

【讨论】:

【参考方案6】:

使用Xamarin.Essentials的解决方案:

var xfColor = Xamarin.Forms.Color.FromRgba(219, 52, 152, 255);

// Extension to convert
// using Xamarin.Essentials;
var platformColor = xfColor.ToPlatformColor();

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

【讨论】:

以上是关于将 Xamarin.Forms.Color 转换为平台特定颜色的主要内容,如果未能解决你的问题,请参考以下文章

将 A 转换为 1 B 转换为 2 ... Z 转换为 26,然后将 AA 转换为 27 AB 转换为 28(Excel 中列引用的列索引)

怎么用ABBYY将PDF转换为JPEG图像

将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组

怎么用ABBYY将PDF转换为JPEG图像

如果将一个NSObject从NSDictionary转换为NSString?

如何将“false”转换为 0,将“true”转换为 1?