#xamarin.forms #colors
#c# #Цвет #xamarin.forms
Вопрос:
Как преобразовать строку в цвет в xamarin.откуда, нет метода Color.FromName ?
string colorStr = "Blue";
BoxView objBoxView = new BoxView
{
HeightRequest = double.Parse(HeightRequest),
HorizontalOptions = LayoutOptions.Fill,
VerticalOptions = LayoutOptions.End,
BackgroundColor = colorStr
};
Комментарии:
1.
BackgroundColor = Color.Blue
сделает это2. Maaan Я знаю, что мне нужна строка для преобразования в цвет, потому что «синий» берется из файла json, но я просто написал «синий»!!
3. ColorTypeConverter -> Вам следует взглянуть на этот класс
Ответ №1:
Некоторые примеры использования ColorTypeConverter со строковыми значениями из тестового TestColorTypeConverter в ColorUnitTests.cs в Xamarin.Формирует github:
var input = new[]
{
"blue", "Blue", "Color.Blue", // by name
"#0000ff", "#00f", // by hex code
"#a00f", // by hex code with alpha
"rgb(0,0, 255)", "rgb(0,0, 300)", // by RGB
"rgba(0%,0%, 100%, .8)", // by RGB percent with alpha
"hsl(240,100%, 50%)", // by HSL
"hsla(240,100%, 50%, .8)", // by HSL with alpha
"Accent", // by Accent color
"Default", "#12345" // not a valid color
};
ColorTypeConverter converter = new ColorTypeConverter();
foreach (var str in input)
{
Color color = (Color)(converter.ConvertFromInvariantString(str));
Debug.WriteLine("{0} is {1} Color", str, color.IsDefault ? "not a" : "a");
}
Ответ №2:
По-видимому Color.FromHex
, он преобразует имя цвета в Color
значение для вас, например
Color background = Color.FromHex("blue"); // #0000FF
Это, по крайней мере, работает с Xamarin.Формы 4.2.0. Я не вижу, чтобы это было явно обещано в документации, на которую даны ссылки, так что кто знает — они могут изменить это в будущем. Было бы неплохо посмотреть, как это соотносится с XF 5.
Ответ №3:
да, к сожалению, нет, но вы можете использовать следующее:
var strColor = "Blue";
var color = System.Drawing.Color.FromName(strColor);
boxColor.BackgroundColor = Color.FromRgb(color.R, color.G, color.B);