【发布时间】:2014-09-30 06:42:21
【问题描述】:
我正在寻找一种将 Xamarin.Forms.Color 转换为平台特定颜色的方法。例如 Android 的 Android.Graphics.Color。
我查看了 Xamarin.Forms.Color 的属性,例如 R、G 和 B。这些值仅包含 0 或 1,因此这似乎毫无价值。以前有人经历过并解决过这个问题吗?
【问题讨论】:
标签: android ios colors xamarin xamarin.forms
我正在寻找一种将 Xamarin.Forms.Color 转换为平台特定颜色的方法。例如 Android 的 Android.Graphics.Color。
我查看了 Xamarin.Forms.Color 的属性,例如 R、G 和 B。这些值仅包含 0 或 1,因此这似乎毫无价值。以前有人经历过并解决过这个问题吗?
【问题讨论】:
标签: android ios colors xamarin xamarin.forms
我猜你尝试在自定义渲染器中执行此操作。
在 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@你答案的最后一行是错字?
ToAndroidColor ();这样的扩展名
XFColor.ToAndroid();
目前您可以使用 Xamarin.Forms.Platform.Android 中的“ToAndroid()”扩展方法来执行此操作。
using Xamarin.Forms.Platform.Android;
Android.Graphics.Color droidColor = formsColor.ToAndroid();
【讨论】:
此处不再使用以前的答案,但 Xamarin 现在已将 ToAndroid() 方法放置在 ColorExtensions 帮助器类中。
using Xamarin.Forms.Platform.Android
....
Android.Graphics.Color color = ColorExtensions.ToAndroid(formsColor);
【讨论】:
以下是一些适用于 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);
【讨论】:
Xamarin have addedToWindowsColor()(我认为是 3.6 版本)。 ->
那么只需要做..YourColorObject.ToWindowsColor() 然后你就有了Windows.UI.Color
【讨论】:
使用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
【讨论】: