Объединение геометрических форм и извлечение контуров

59

В Expression Blend предоставляется возможность выполнять целый ряд операций с помощью которых можно создавать новые объекты типа Path, объединяя уже сушествующие формы самыми разными способами. Для активизации подобных инструментальных средств необходимо, прежде всего, выбрать несколько графических элементов на монтажном столе, а еще лучше - выбрать несколько перекрывающихся так или иначе злементов.

Для расположения двух или нескольких объединяемых графических элементов на монтажном столе таким образом, чтобы действительно перекрывались, воспользуйтесь инструментом Selection. После этого выделите все элементы, нажав клавишу <Shift> и щелкнув сначала на первом из них, а затем на последнем.

При формировании нового объекта типа Path в Expression Blend используется кисть, назначенная для графического элемента, выбранного последним. Поэтому убедитесь в том, что у выбранной последней геометрической формы имеется та кисть, которой вы хотели бы воспользоваться.

Далее щелкните правой кнопкой мыши на выделенных элементах и перейдите к пункту Combine (Объединить) всплывающего контекстного меню. Под этим пунктом доступен целый ряд полезных операций объединения геометрических форм:

Пункт Combine

Ниже приведено краткое описание операций объединения геометрических форм, выбираемых из пункта Combine всплывающего контекстного меню:

Unite (Объединить)

Соединяет все формы или контуры в единый объект.

Divide (Разделить)

Вырезает формы или контуры в месте их пересечения, оставляя все разделенные части без изменения.

Intersect (Пересечь)

Оставляет перекрывающиеся участки форм, удаляя неперекрывающиеся.

Subtract (Вычесть)

Вырезает все остальные выделенные формы из той, что выделена последней.

Exclude Overlap (Исключить перекрытие)

Оставляет неперекрывающиеся участки форм, удаляя перекрывающиеся.

Опробовав каждую из упомянутых выше операций объединения геометрических форм, вы сами убедитесь в том, что они достаточно интуитивны.

В Expression Blend предоставляется еще один способ формирования нового объекта типа Path по команде Convert to Path. Это оказывается удобным в том случае, если геометрическая форма создана основными инструментами рисования, например Ellipse или Rectangle, или же построена на основании специальной формы, выбираемой из библиотеки ресурсов, и требует дальнейшего видоизменения отдельных ее линий или отрезков.

В качестве примера рассмотрим форму звезды, созданную ранее. Если посмотреть на разметку этой геометрической формы в коде XAML, то она будет выглядеть аналогично приведенной ниже:

<ed:RegularPolygon Fill="#FFF4F4F5" HorizontalAlignment="Right" 
		Height="108" InnerRadius="0.612" Margin="0,0,104,102" 
		PointCount="10" Stretch="Fill" Stroke="Black" 
		VerticalAlignment="Bottom" Width="124.5"/>

Щелкните правой кнопкой мыши на этой (или аналогичной) форме на монтажном столе и выберите команду Path --> Convert to Path из всплывающего контекстного меню. В итоге объект типа RegularPolygon будет преобразован в объект типа Path, как показано в приведенной ниже разметке:

<Path Data="M62.250001,0.5 L73.928063,24.384583 L100.4136,10.717591 L92.823563,35.696666 
		            L124,37.467591 L100.041,54 L124,70.532409 L92.823563,72.303334 L100.4136,97.282409 
					L73.928063,83.615417 L62.250001,107.5 L50.57194,83.615417 L24.086402,97.282409 
					L31.676439,72.303334 L0.49999993,70.532409 L24.459,54 L0.49999993,37.467591 
					L31.676439,35.696666 L24.086402,10.717591 L50.57194,24.384583 z" 
					Fill="#FFF4F4F5" HorizontalAlignment="Right" 
		            Height="107.5" Margin="0,0,104.25,102.25" Stretch="Fill" Stroke="Black" 
			VerticalAlignment="Bottom" Width="124"/>

Выбрав новый объект типа Path, вы можете далее выполнить его прямое выделение инструментом Direct Selection и видоизменить каждый элемент его геометрической формы. Такое применение инструмента Direct Selection было бы невозможным, если бы форма представляла собой правильный многоугольник. Ведь у правильного многоугольника отсутствуют отдельные точки контура, доступные для правки.

Пройди тесты
Лучший чат для C# программистов