Главная » Silverlight » Фигуры и рисование в Silverlight

0

Поддержка двухмерного рисования — фундамент многих изощренных средств Silverlight, таких как интерактивная графика, анимация и пользовательские элементы управления. Даже если вы не планируете создавать для приложения настра­иваемые произведения искусства, вам необходимо основательное понимание встроен­ных в Silverlight средств рисования. Вы будете использовать их для добавления в при­ложение профессиональных эффектов и создания интерактивной графики. Например, фигуры могут изменяться или перемещаться в ответ на действия пользователя.

Платформа Silverlight позаимствовала у WPF целый набор средств рисования. В этой главе рассматривается модель фигур, позволяющая создавать сложные графические объекты на основе прямоугольников, эллипсов, отрезков и других фигур. Вы научитесь преобразовывать существующие векторные объекты в формат XAML, что позволяет ис­пользовать существующие графические компоненты, не создавая их с нуля.

Новые средства. Базовая модель двухмерного рисования в Silverlight 3 не изменилась. Опытные разработчики приложений Silverlight найдут в главе лишь одно новое средство — элемент управления viewbox. Оно применялось в главе 3 для изменения размеров всего пользовательского интерфейса, и теперь вы увидите, как оно используется для масштабирования графики. Несколько дополнений к модели рисования Silverlight рассматривается в следующей главе, в которой представлено введение в имитацию трехмерного рисования, а также описаны эффекты затенения пикселей и генерируемые растровые изображения.

Базовые фигуры

Создать двухмерный рисунок в пользовательском интерфейсе Silverlight проще всего с помощью фигур — встроенных классов, рисующих отрезки, эллипсы, прямоугольники, многоугольники и т.д. Другое название фигур — графические примитивы. Комбинируя примитивы разных типов, разработчик создает сложные изображения.

Все фигуры являются элементами и наследуют класс FrameworkElement. Отсюда вы­текает ряд важных следствий.

•       Фигура рисует сама себя. Разработчику не нужно управлять процессом рисова­ния. Например, при перемещении фигуры, изменении размеров страницы или свойств фигуры разработчику не нужно вручную задавать команды стирания старой фигуры и прорисовки новой.

•       Иерархически фигуры организованы так же, как и другие элементы. Фигу­ру можно разместить в контейнере (см. главу 3). Чаще всего фигуры размещают в контейнере Canvas, поскольку он позволяет задавать координаты элементов, что важно при создании сложных рисунков из простых элементов.

• поддерживают те же события, что и другие элементы. Это означает, что для реагирования на щелчки мышью, перемещения мыши и нажатия кла­виш не нужно вычислять координаты щелчка или программно выяснять, какой элемент имеет фокус, достаточно подключить к фигуре обработчик события, как к любому другому элементу.

Для ускорения прорисовки двухмерных рисунков на основе фигур в Silverlight ис­пользуются специальные процедуры оптимизации. Например, когда фигуры перекры­ваются, надстройка Silverlight сначала выясняет, какие части фигур’ невидимы, чтобы не тратить время на их рисование.

Классы фигур Каждая фигура наследует абстрактный класс System. Windows . Shapes . Shape (рис. 8.1).

Рис. 8.1. Иерархия классов фигур

На рис. 8.1 видно, что в Silverlight определен относительно небольшой набор клас­сов, производных от класса Shape (Фигура). Элементы Line (Отрезок), Ellipse (Эллипс) и Rectangle (Прямоугольник) довольно простые, их назначение очевидно из названия. Элемент Polyline (Полилиния) выводит последовательность соединенных отрезков (ло­маную линию), a Polygon (Многоугольник) — замкнутую ломаную линию. Класс Path (Контур) — наиболее мощный, он объединяет любые фигуры в одном элементе.

Базовый класс Shape сам по себе ничего не рисует. Он определяет набор важных свойств других фигур (табл. 8.1).

Таблица 8.1. Свойства фигур, определенные в классе Shape

Имя свойства

Описание

Fill

Объект кисти, заполняющей поверхность замкнутой фигуры внутри ее границ

Stroke

Объект кисти, рисующий границу фигуры

StгокеThickness

Толщина границы в пикселях

StrokeStartLineCap И StrokeEndLineCap

Форма начала и конца отрезка; эти свойства применимы только к фигурам Line, Polyline и (иногда) Path; все другие фигуры замкнутые и не имеют начала и конца

StrokeDashArray, StrokeDashOffset И StrokeDashCap

Свойства, управляющие выводом штриховой границы фигуры; с их помощью можно изменять длину и шаг штрихов, а также задавать, в каких точках границы начинаются штрихи

StrokeLineJoin И StrokeMiterLimit

Свойства, определяющие форму вершин фигуры, т.е. точек, в которых пересекаются отрезки; на фигуры Line и Ellipse эти свойства не влияют

Stretch

Свойство, определяющее заполнение фигурой доступного пространства; его можно использовать, например, для создания фигуры, расширяющейся до размеров, позволяемых контейнером (используется редко)

GeometryTransform

Свойство, позволяющее применить объект преобразования, который изменяет систему координат фигуры; с помощью этого свойства можно наклонять, поворачивать или смещать фигуру; объекты преобразований особенно полезны в анимации (см. главу 9)

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии