Что более интересно, тот же самый редактор позволяет конфигурировать и градиентные кисти, которые применяются для определения последовательностей цветов и точек перехода цветов. Вспомните, что редактор кистей предлагает набор вкладок, первая из которых позволяет установить
Щелкните на вкладке градиентной кисти; редактор отобразит несколько новых настроек (рис. 26.6).
Три кнопки в левом нижнем углу позволяют выбрать линейный градиент, радиальный градиент или обратить градиентные переходы. Полоса внизу покажет текущий цвет каждого градиентного перехода, который будет представлен специальным ползунком. Перетаскивая ползунок по полосе градиента, можно управлять смещением градиента. Кроме того, щелкая на конкретном ползунке, можно изменять цвет определенного градиентного перехода с помощью селектора цвета. Наконец, щелчок прямо на полосе градиента позволяет добавлять градиентные переходы.
Потратьте некоторое время на освоение этого редактора, чтобы построить радиальную градиентную кисть, содержащую три градиентных перехода, и установить их цвета. На рис. 26.6 показан пример кисти, использующей три оттенка зеленого цвета.
В результате IDE-среда обновит разметку XAML, добавив набор специальных кистей и присвоив их совместимым с кистями свойствам (свойство Fill
элемента Ellipse
в рассматриваемом примере) с применением синтаксиса "свойство-элемент":
Конфигурирование кистей в коде
Теперь, когда вы построили специальную кисть для определения XAML элемента Ellipse, соответствующий код C# устарел в том плане, что он по-прежнему будет визуализировать круг со сплошным зеленым цветом. Для восстановления синхронизации модифицируйте нужный оператор case
, чтобы использовать только что созданную кисть. Ниже показано необходимое обновление, которое выглядит более сложным, чем можно было ожидать, т.к. шестнадцатеричное значение преобразуется в подходящий объект Color
посредством класса System.Windows.Media.ColorConverter
(результат изменения представлен на рис. 26.7):
case SelectedShape.Circle:
shapeToRender = new Ellipse { Height = 35, Width = 35 };
// Создать кисть RadialGradientBrush в коде.
RadialGradientBrush brush = new RadialGradientBrush;
brush.GradientStops.Add(new GradientStop(
(Color)ColorConverter.ConvertFromString("#FF77F177"), 0));
brush.GradientStops.Add(new GradientStop(
(Color)ColorConverter.ConvertFromString("#FF11E611"), 1));
brush.GradientStops.Add(new GradientStop(
(Color)ColorConverter.ConvertFromString("#FF5A8E5A"), 0.545));
shapeToRender.Fill = brush;
break;
Кстати, объекты GradientStop
можно строить, указывая простой цвет в качестве первого параметра конструктора с применением перечисления Colors
, которое дает сконфигурированный объект Color
:
GradientStop g = new GradientStop(Colors.Aquamarine, 1);
Если требуется более тонкий контроль, то можно передавать объект Color
, сконфигурированный в коде, например:
Color myColor = new Color { R = 200, G = 100, B = 20, A = 40 };
GradientStop g = new GradientStop(myColor, 34);
Разумеется, использование перечисления Colors
и класса Color
не ограничивается градиентными кистями. Их можно применять всякий раз, когда необходимо представить значение цвета в коде.
Конфигурирование перьев
В сравнении с кистями перо представляет собой объект для рисования границ геометрических объектов или в случае класса Line
либо PolyLine
— самого линейного геометрического объекта. В частности, класс
позволяет рисовать линию указанной толщины, представленной значением типа Pen
double
. Вдобавок объект Pen
может быть сконфигурирован с помощью того же самого вида свойств, что и в классе Shape
, таких как начальный и конечный концы пера, шаблоны точек-тире и т.д. Например, для определения атрибутов пера к определению фигуры можно добавить следующую разметку:
StartLineCap="Round" />
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT