Xamarin.Forms.Colorをプラットフォーム固有の色に変換する方法を探しています。たとえば、AndroidのAndroid.Graphics.Colorです。
R、G、BのようなXamarin.Forms.Colorのプロパティを確認しました。値には0または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);
現在、これはXamarin.Forms.Platform.Androidの "ToAndroid()"拡張メソッドで行うことができます。
using Xamarin.Forms.Platform.Android;
Android.Graphics.Color droidColor = formsColor.ToAndroid();
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はToAndroid()メソッドをColorExtensionsヘルパークラスに配置しています。
using Xamarin.Forms.Platform.Android
....
Android.Graphics.Color color = ColorExtensions.ToAndroid(formsColor);
Xamarinが追加しましたToWindowsColor()
(3.6リリースで考えています)。 ->
その後、それを行う必要があるだけです。YourColorObject.ToWindowsColor()
そして、あなたはWindows.UI.Color