Главная » Silverlight » Отрезки, эллипсы и прямоугольники

0

Классы LineGeometry, RectangleGeometry и EllipseGeometry аналогичны соответ­ствующим фигурам Line, Rectangle и Ellipse, рассмотренным выше. В качестве при­мера рассмотрим приведенную ниже разметку прямоугольника.

<Rectangle Fill="Yellow" Stroke="Blue"

Width="100" Height="50" ></Rectangle>

Такой же результат можно получить с помощью элемента RectangleGeometry.

<Path Fill="Yellow" Stroke="Blue"> <Path.Data> <RectangleGeometry Rect="0,0 100,50"> </RectangleGeometry> </Path.Data>

</Path>

Единственное существенное отличие состоит в том, что объект Rectangle принима­ет значения Height и Width, а объект RectangleGeometry — четыре числа, определяю­щие размеры и расположение прямоугольника. Первые два числа задают координаты X и Y верхнего левого утла прямоугольника, а последние два — его ширину и высоту. Если первые два числа равны нулю, верхний левый угол находится в начале координат. Кроме того, класс RectangleGeometry поддерживает свойства PadiusX и RadiusY, позво­ляющие скруглять углы прямоугольника (см. выше).

Рассмотрим следующую разметку отрезка Line.

CLine Stroke="Blue" Х1="0" Y1="0" Х2="10" Y2="100"></Line>

Ниже приведена эквивалентная разметка, в которой вместо элемента Line исполь­зуется элемент LineGeometry.

<Path Fill="Yellow" Stroke="Blue"> <Path.Data>

<LineGeometry StartPoint="0,0" EndPoint="10,100"> </LineGeometry> </Path.Data>

</Path>

Еще один пример. Ниже приведена разметка элемента Ellipse.

<Ellipse Fill="Yellow" Stroke="Blue" Width="100" Height="50">

</Ellipse>

К тому же результату приводит использование элемента EllipseGeometry.

<Path Fill="Yellow" Stroke="Blue"><Path.Data>

<EllipseGeometry RadiusX="50" RadiusY="25" Center="50,25"></EllipseGeometry> </Path.Data>

</Path>

Обратите внимание на то, что в данной разметке радиусы равны значениям сме­щения центра эллипса, заданным в свойстве Center. Поэтому эллипс размещен точно в центре области фигуры, и фигура выглядит так же, как при использовании элемен­та Ellipse.

Таким образом, простые элементы Geometry работают так же, как соответствующие примитивы, производные от Shape. Объекты RectangleGeometry и EllipseGeometry предоставляют дополнительную возможность задать смещение, но это не так уж не­обходимо, поскольку в контейнере Canvas можно позиционировать вложенные элемен­ты. Поэтому при размещении одного элемента лучше применить объект Shape. Отличия элементов Geometry от примитивов Shape становятся существенными, когда нужно группировать объекты или создавать криволинейные фигуры.

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

По теме:

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