将 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 中列引用的列索引)
将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组