Программирование >>  Windows foundation 

1 2 3 [ 4 ] 5 6 7 ... 15


Окончание табл. 34.2

Пространство имен

Описание

System.Windows.Input

System.Windows.Interop

System.Windows.Markup System.Windows.Media

System.Windows.Navigation System.Windows.Resources System.Windows.Shapes

System.Windows.Threading System.Windows.Xps

Фигуры

Пространство имен System.Windows.Input содержит несколько

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

Классы, необходимые для интеграции Win32 и WPF вы найдете в пространстве имен System.Windows.Interop.

В этом пространстве имен содержатся вспомогательные классы для кода разметки XAML.

Для работы с изображениями, аудио- и видеосодержимым вы можете использовать классы из пространства имен System. Windows.Media.

Это пространство имен содержит классы, необходимые для навигации между окнами.

Это пространство имен включает классы, поддерживающие работу с ресурсами.

Центральные классы пользовательского интерфейса расположены в пространстве имен System.Windows.Shapes: Line, Ellipse, Rectangle и другие.

Элементы WPF подобны элементам управления Windows Forms, привязанным к единственному потоку. В пространстве имен

System.Windows.Threading вы найдете классы, предназначенные для работы с множеством потоков; например, в этом пространстве находится класс Dispatcher.

XML Paper Specification (XPS) - это новая спецификация документов, также поддерживаемая Microsoft Word. В пространствах имен System.Windows.Xps.Packaging и System.Windows. Xps.Serialization вы найдете классы, необходимые для создания потоковых документов XPS.

Фигуры (shapes) - центральные элемента: WPF. С их помощью вы можете рисовать двумерную графику, используя прямоугольники, линии, эллипсы, многоугольники и ломаные - все эти фигуры представлены классами, унаследованными от абстрактного базового класса Shape. Фигуры определены в пространстве имен System.Windows.Shapes.

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

<Window x:Class= ProCSharp.WPF.Window1

xmlns= http: schemas.microsoft.com/winfx/2 00 6/xaml/presentation xmlns:x= http: schemas.microsoft.com/winfx/2 006/xaml Title= WPF Samples Height= 260 Width= 230 >

<Canvas>

<Ellipse Canvas.Left= 50 Canvas.Top= 50 Width= 100 Height= 100

Stroke= Blue StrokeThickness= 4 Fill= Yellow /> <Ellipse Canvas.Left= 60 Canvas.Top= 65 Width= 25 Height= 25

Stroke= Blue StrokeThickness= 3 Fill= White /> <Ellipse Canvas.Left= 70 Canvas.Top= 75 Width= 5 Height= 5 Fill= Black />



<Path Stroke= Blue StrokeThickness= 4 Data= M 62,125 Q 95,122 102,108 />

<Line X1= 124 X2= 132 Y1= 144 Y2= 166 Stroke= Blue StrokeThickness= 4 /> X2= 133 Y1= 169 Y2= 166 Stroke= Blue StrokeThickness= 4 /> X2= 82 Y1= 146 Y2= 168 Stroke= Blue StrokeThickness= 4 X2= 83 Y1= 160 Y2= 168 Stroke= Blue StrokeThickness= 4

<Line X1= 114 <Line X1= 92 <Line X1= 68

</Canvas> </Window>

/> />

Результат работы этого кода показан на рис. 34.5.

Все эти элементы WPF доступны программно, независимо от того - будь то кнопки или фигуры вроде линий и прямоугольников. Присваивание свойству Name элемента Path значения mouth (рот) позволяет вам получить программный доступ к данному элементу через переменную mouth:

<Path Name= mouth Stroke= Blue StrokeThickness= 4

Data= M 62,125 Q 95,122 102,108 />

В отделенном коде для свойства Data элемента Path mouth устанавливается в новую геометрию. Чтобы задать форму кривой, класс Path поддерживает PathGeometry с синтаксисом разметки пути. Буква M определяет начальную точку пути, Q устанавливает контрольную точку и конечную точку для квадратичной кривой Безье. Запустив приложение, вы увидите окно в том виде, как оно показано на рис. 34.6.

public Window1()

InitializeComponent();

mouth.Data = Geometry.Parse( M 62,125 Q 95,122 102,128 );

Ранее в этой главе вы узнали, что кнопка может иметь любое содержимое. Внеся небольшое изменение в код XAML, и добавив элемент Button в качестве содержимого окна, вы заставите графику отображаться внутри кнопки (рис. 34.7).

<Window x:Class= ShapesDemo.Window1

xmlns= http: schemas.microsoft.com/winfx/20 06/xaml/presentation xmlns:x= http: schemas.microsoft.com/winfx/2006/xaml Title= ShapesDemo Height= 260 Width= 230 > <Button Margin= 5 > <Canvas Height= 260 Width= 230 >

<Ellipse Canvas.Left= 50 Canvas.Top= 50 Width= 100 Height= 100

Stroke= Blue StrokeThickness= 4 Fill= Yellow /> <Ellipse Canvas.Left= 60 Canvas.Top= 65 Width= 25 Height= 25 Stroke= Blue StrokeThickness= 3 Fill= White />


Рис. 34.5. Пример применения XAML


Рис. 34.6. Управление отдельным элементом


Рис. 34.7. Отображение графики внутри кнопки



<Ellipse Canvas.Left= 70 Canvas.Top= 75 Width= 5 Height= 5 Fill= Black /> <Path Name= mouth Stroke= Blue StrokeThickness= 4 Data= M 62,125 Q 95,122 102,108 />

<Line X1= 124 X2= 132 Y1= 144 Y2= 166 Stroke= Blue StrokeThickness= 4 /> <Line X1= 114 X2= 133 Y1= 169 Y2= 166 Stroke= Blue StrokeThickness= 4

<Line X1= 92 X2= 82 Y1= 146 Y2= 168 Stroke=

Y2= 168 Stroke=

lue StrokeThickness= 4 lue StrokeThickness= 4

/> /> />

<Line X1= 68 X2= 83 Y1= 16

</Canvas> </Button> </Window>

В табл. 34.3 перечислены фигуры, доступные в пространстве имен System. Windows.Shapes.

Таблица 34.3. Фигуры, доступные в пространстве имен System.Windows.Shapes

Класс фигуры

Line

Описание

Rectangle

Ellipse

Path

Polygon

Polyline

Вы можете рисовать линию от координаты X1.Y1 до X2.Y2.

С помощью класса Rectangle вы можете рисовать прямоугольник, задавая его ширину и высоту - Width и Height.

Этот класс позволит вам нарисовать эллипс.

Класс Path можно использовать для рисования серии прямых и кривых линий. Свойство Data имеет тип Geometry. Вы можете выполнять рисование, используя классы, унаследованные от базового класса Geometry, либо применять синтаксис разметки пути для определения геометрии.

Вы можете рисовать замкнутую фигуру, состоящую из соединенных линий посредством класса Polygon. Полигон определен серией объектов Point, присвоенной свойству Points.

Подобно классу Polygon, вы можете рисовать соединенные линии с помощью Polyline. Отличие от полигона состоит в том, что ломаная не обязана формировать замкнутую фигуру.

Трансформация

Поскольку WPF основано на DirectX, который, в свою очередь, основан на векторной графике, вы можете масштабировать любой элемент. Векторная графика поддается масштабированию, вращению и сдвигу. Проверка попадания курсора мыши (hit testing) работает без необходимости в ручном вычислении позиции.

Добавление элемента ScaleTransform к свойству LayoutTransform элемента Canvas, как показано ниже, изменяет размер содержимого полного холста (canvas) вдвое в направлениях X и Y.

<Canvas.LayoutTransform>

<ScaleTransform ScaleX= 2 ScaleY= 2 /> </Canvas.LayoutTransform>

Поворот может быть осуществлен способом, подобным масштабированию. Используя элемент RotateTransform, вы можете определить угол поворота (Angle):

<Canvas.LayoutTransform>

<RotateTransform Angle= 40 />

</Canvas.LayoutTransform>

Для скоса (skewing) вы можете применить элемент SkewTransform. При сдвиге вы можете назначать углы в направлениях X и Y.



1 2 3 [ 4 ] 5 6 7 ... 15

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика