Во многих случаях создавать объект Pen
StrokeThickness производного от Shape типа (а также других типов UIElement). Однако строить специальный объект Pen удобно при работе с типами, производными от Drawing (которые рассматриваются позже в главе). Среда Visual Studio не располагает редактором перьев Применение графических трансформаций
В завершение обсуждения фигур будет рассмотрена тема
System.Winodws.Media.Transform. В табл. 26.5 кратко описаны основные классы, производные от Transform.Трансформации могут применяться к любым объектам UIElement
Shape классов, а также к элементам управления Button, TextBox и т.п.). Используя классы трансформаций, можно визуализировать графические данные под заданным углом, скашивать изображение на поверхности и растягивать, сжимать либо поворачивать целевой элемент разными способами.На заметку!
Хотя объекты трансформаций могут применяться повсеместно, вы сочтете их наиболее удобными при работе с анимацией WPF и специальными шаблонами элементов управления. Как будет показано далее в главе, анимацию WPF можно использовать для включения в специальный элемент управления визуальных подсказок, предназначенных конечному пользователю.Назначать целевому объекту (Button
Path и т.д.) трансформацию (либо целый набор трансформаций) можно с помощью двух общих свойств, LayoutTransform и RenderTransform.Свойство LayoutTransform
С другой стороны, трансформация из свойства RenderTransform
Первый взгляд на трансформации
Вскоре вы добавите к проекту RenderingWithShapes
Page или Window простой элемент StackPanel и установите свойство Orientation в Horizontal. Далее добавьте следующий элемент Rectangle, который будет нарисован под углом в 45 градусов с применением объекта RotateTransform:
Здесь элемент Button
SkewTransform:
Для полноты картины ниже приведен элемент Ellipse
ScaleTransform (обратите внимание на значения, установленные в свойствах Height и Width), а также элемент TextBox, к которому применена группа объектов трансформации:
Следует отметить, что в случае применения трансформации выполнять какие-либо ручные вычисления для реагирования на проверку попадания, перемещение фокуса ввода и аналогичные действия не придется. Графический механизм WPF самостоятельно решает такие задачи. Например, на рис. 26.8 можно видеть, что элемент TextBox
Трансформация данных Canvas
Теперь нужно внедрить в пример RenderingWithShapes
Rectangle, TextBox и т.д.) их можно также применять к диспетчеру компоновки, чтобы трансформировать все внутренние данные. Например, всю панель DockPanel главного окна можно было бы визуализировать под углом:
...
В рассматриваемом примере это несколько чрезмерно, так что добавьте последнюю (менее радикальную) возможность, которая позволит пользователю зеркально отобразить целый контейнер Canvas
ToolBar финального элемента ToggleButton со следующим определением: Content="Flip Canvas!"/>
Внутри обработчика события Click
ToggleButton создайте объект RotateTransform и подключите его к объекту Canvas через свойство LayoutTransform, если элемент ToggleButton отмечен. Если же элемент ToggleButton не отмечен, тогда удалите трансформацию, установив свойство LayoutTransform в null.Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT