Инструменты Pen и Pencil
95Expression Blend --- Основы работы --- Инструменты Pen и Pencil
Инструментом Pencil можно рисовать от руки штрихованные рисунки, как карандашом, а инструментом Pen - дуги и соединяемые точками прямые и кривые линии, как пером. Итак, найдите эти инструменты на панели Tools (показано на рисунке) и выберите инструмент Pencil. С другой стороны, инструмент Pencil можно быстро выбрать, нажав оперативную клавишу <Y>.
Инструментом Pencil можно рисовать произвольные геометрические формы на монтажном столе, удерживая нажатой левую кнопку мыши и перемещая курсор данного инструмента. Выполняя эту операцию, вы непременно заметите, что в том месте, где помещается курсор инструмента Pencil, визуализируется отдельный элемент изображения (так называемый пиксель). С помощью инструмента Pencil можно определить произвольную разомкнутую геометрическую форму или же соединить начальную и конечную точки для создания замкнутой многоугольной формы.
Завершив рисование нескольких геометрических форм по собственному усмотрению, активизируйте инструмент Direct Selection, нажав оперативную клавишу <A>. Напомним, что прямое выделение формы инструментом Direct Selection дает возможность видоизменять отдельные участки, из которых состоит данная форма, по точкам контура. С другой стороны, обычное выделение инструментом Selection, который активизируется с помощью оперативной клавиши <V>, дает возможность выделить весь графический элемент для изменения его положения, размеров или иного вида преобразования.
Если работать с инструментом Pencil относительно просто, то работать с инструментом Pen, как ни странно, немного труднее. Итак, выберите инструмент Pen, нажав оперативную клавишу <Р>. Главное отличие инструмента Pen от родственного ему инструмента Pencil заключается в том, что при каждом перемещении мыши данные отдельных пикселей не регистрируются инструментом Pen. Вместо этого инструментом Pen создается ряд соединяемых отрезков после каждого щелчка кнопкой мыши.
В качестве упражнения активизируйте инструмент Pen, если вы этого еще не сделали, перейдите к пустому участку монтажного стола и щелкните пять или шесть раз левой кнопкой мыши. Создав подобным образом несколько отрезков линии, можете затем видоизменить их контур разными способами, используя инструмент Pen. Так, если вы нажмете клавишу <Alt>, пользуясь инструментом Pen, то можете выделить (и захватить) уже существующую активную точку, чтобы преобразовать отрезок линии в отрезок дуги при перемещении курсора данного инструмента, как показано на рисунке:
Следует также иметь в виду, что если вы выберете инструмент Pen и поместите его курсор на уже существующей активной точке, курсор изменит свой вид на знак "минус". Если вы далее щелкнете на этой точке, она будет удалена из контура.
Если же вы хотите добавить к геометрической форме дополнительную активную точку, щелкните на нужном месте текущего отрезка линии.
Инструмент Pen реагирует на целый ряд операций, инициируемых нажатием клавиш и допускающих дальнейшее видоизменение контура геометрической формы. Подробнее об этом можно узнать, обратившись за справкой к разделу "Pen tool, modifiers" по предметному указателю руководства пользователя Expression Blend:
При создании новых геометрических форм инструментами Pen и Pencil в Expression Blend фиксируются операции, инициируемые перемещением курсора, нажатием кнопок мыши и клавиш для создания нового объекта Path. А на платформах WPF и Silverlight предоставляются классы, представляющие наиболее распространенные геометрические формы, причем все эти классы находятся в пространстве имен Windows.Shapes. В классе Path определяется свойство Data, где в конечном итоге сохраняется коллекция различных объектов геометрической формы, определяющих размеры и форму отдельного графического элемента. Для подобных целей на платформах WPF и Silverlight предоставляются такие классы, как RectangleGeometry, EllipseGeomerry, PathGeometry.
Но если вы посмотрите исходную разметку XAML объектов типа Path, автоматически создаваемых в среде Expression Blend, то ожидаемых объектов геометрической формы вы в ней не обнаружите. Вместо них вы увидите длинное строковое значение, присвоенное свойству Data и состоящее из целого ряда чисел и буквенных знаков вроде:
<Grid x:Name="LayoutRoot">
<Path Data="M109,121 C92.705673,107.63865 81.862961,108.2284 100,78 109.78304,61.694928
110.20453,67 137,67 147.96769,67 153.49788,64.748939 164,70 170.77792,73.388962
179.34021,75.55302 185,80 190.17186,84.063601 181.66866,107 160,107 183.16041,111.63208
205.96348,86.445218 225,115 237.61587,133.9238 231.50883,146 175,146 182.24882,146
225.88424,177.11534xd;xa;203.49965,199.49993 191.85086,211.14872 162.40754,212.27169 141,198 125.94662,187.96441
103.69919,203.23306 85,197 83.603724,196.53457 79.509975,192.01995 79,191 77.493305,187.98661 76.784065,180.40531
84,178 90.212813,175.92906 99.070509,175.96475 105,173 94.966637,169.65555 84.036609,161.32563 75,155 66.4582,149.02074
62.423752,146.25416 67,131 69.617696,122.27435xd;xa;81.130995,128.4786 92,135 105.0988,142.85928 99.8128,142.0192 109,121 z"
Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="143.295" Margin="65.091,66.176,0,0" Stretch="Fill" Stroke="Black"
VerticalAlignment="Top" Width="166.411"/>
<Path Data="M326,64 L364.5,92.5 C364.5,92.5 369.5,102.5 366.5,109.5 363.5,116.5 305.50021,45.499409
343.49983,128.5 381.49945,211.50059 360.16633,135.16667 389.49937,129.5 389.49937,129.5
399.49926,104.5 402.49923,101.5"
Fill="#FFF4F4F5" Height="103.957" Margin="0,64,228.5,0" Stretch="Fill"
Stroke="Black" VerticalAlignment="Top" HorizontalAlignment="Right" Width="77.5"/>
</Grid>
Это длинное строковое значение представляет собой компактную форму описания объектов геометрической формы, используемых для визуализации объекта типа Path, на так называемом мини-языке описания контуров. К счастью, вам не придется обрабатывать эти строковые данные вручную. Но в то же время вам не помешает знать, что в столь сжатой строковой форме представлен целый ряд инструкций по выводу результатов визуализации объекта типа Path.
Когда вы экспортируете специальные графические данные средствами Expression Design, язык моделирования контуров в XAML не применяется, а вместо него используется более крупная объектная модель. Но, как правило, именно это и требуется, поскольку объектами геометрической формы можно легко манипулировать в коде.