it-swarm.com.ru

Укажите цвет RGB в XAML с помощью Xamarin

Я создаю несколько стилей приложения в своем приложении и хочу определить некоторые явные цвета для использования по ключу. В WPF XAML я бы создал SolidColorBrush для определения значений RGB/ARGB. В Xamarin XAML мне нужно преобразовать это в hex, чтобы определить тот же цвет в XAML? Фрагмент ниже взят из WPF XAML.

<SolidColorBrush
    x:Key="blueColor">
    <SolidColorBrush.Color>
        <Color
            A="255"
            R="50"
            G="150"
            B="225" />
    </SolidColorBrush.Color>
</SolidColorBrush>
6
Rasmus Christensen

Xamarin.Forms предоставляет кроссплатформенный класс Color.

Использование из Xaml:

На цвета также можно легко ссылаться в Xaml, используя определенные имена цветов или представленные здесь шестнадцатеричные представления:

<Label Text="Sea color" BackgroundColor="Aqua" />
<Label Text="RGB" BackgroundColor="#00FF00" />
<Label Text="Alpha plus RGB" BackgroundColor="#CC00FF00" />
<Label Text="Tiny RGB" BackgroundColor="#0F0" />
<Label Text="Tiny Alpha plus RGB" BackgroundColor="#C0F0" />

Класс Color предоставляет несколько методов для создания экземпляра цвета

  • Named Colors - коллекция общих именованных цветов, включая красный, зеленый и синий.
  • FromHex - строковое значение, аналогичное синтаксису, используемому в HTML, например, «00FF00». 
  • Альфа может быть опционально указана как первая пара символов («CC00FF00»).
  • FromHsla - Двойные значения оттенка, насыщенности и яркости, с необязательным альфа-значением (0,0-1,0).
  • FromRgb - значения int для красного, зеленого и синего (0-255).
  • FromRgba - значения красного, зеленого, синего и альфа-int (0-255).
  • FromUint - установить одно двойное значение, представляющее argb.

Ссылка: Использование цветов в Xamarin.Forms

6
SushiHangover

В соответствии с примером Xamarin's WorkingWithColors , вы можете сделать что-то вроде этого:

<Color
  x:Key="BlueColor">
  <x:Arguments>
    <x:Double>.4</x:Double> <!-- R/255 -->
    <x:Double>.62</x:Double> <!-- G/255 -->
    <x:Double>.95</x:Double> <!-- B/255 -->
    <x:Double>.2</x:Double> <!-- A: 0.0-1.0 -->
  </x:Arguments>
</Color>

Их пример не показывает использование альфа-канала, но я только что протестировал его, и по состоянию на 30 мая 2017 года он, кажется, работает просто отлично.

Однако имейте в виду, что это, похоже, не задокументировано. Руководство Xamarin.Forms «Цвета» , которое идет с кодом выше, также не упоминает об этом, так что это может измениться без уведомления.

2
j.f.

В прямом ответе на вопрос вы не можете указать x: FactoryMethod = "FromRgb" в xaml для указания цветов в RGB из ресурсов. Чтобы обойти это, вы должны указать цвета, используя подход «FromHex» и конвертировать, например, например.

<Color x:Key="somethingGreenish" x:FactoryMethod="FromHex">
    <x:Arguments>
        <x:String>#97cd75</x:String>
    </x:Arguments>
</Color>
1
The Senator