Для создания прямоугольника применяется элемент Rectangle, c атрибутами Canvas.Left, Canvas.Top, Width и Height (рис. 2.1):
(рис 2.1) Элемент Rectangle
Атрибуты Canvas.Left, Canvas.Top задают координаты верхнего левого угла прямоугольника, а Width и Height определяют его ширину и высоту. Для элемента нужно задавать значение цветов заливки (Fill) и контура (Stroke). В табл. 2.1 приводятся различные примеры элемента rect.
| № | Код | Вид в браузере |
|---|---|---|
| 2.1.1 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="50" Canvas.Top="40"/> </Canvas> |
|
|
| Описание | ||
| Прямоугольник с минимумом атрибутов. По умолчанию заливается белым цветом | ||
| № | Код | Вид в браузере |
| 2.1.2 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="50" Canvas.Top="40" RadiusY="10" RadiusX="10"/> </Canvas> |
|
|
| Описание | ||
Атрибуты RadiusX и RadiusY позволяют задавать значения округления углов. Максимальные значения атрибутов RadiusX и RadiusY соответственно равны половинам ширины и высоты прямоугольника. В данном случае это 50 и 15 пикселей. Для получения эффекта необходимо указывать оба атрибута. При задании значения, большего, чем ширина или высота прямоугольника, подставляется максимальное значение. |
||
| № | Код | Вид в браузере |
| 2.1.3 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="50" Canvas.Top="40" RadiusY="15" RadiusX="50"/> </Canvas> |
|
|
| Описание | ||
Прямоугольник с максимальными значениями атрибутов RadiusX и RadiusY |
||
| № | Код | Вид в браузере |
| 2.1.4 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="50" Canvas.Top="40" RadiusY="49.5" RadiusX="49.5"/> </Canvas> |
|
|
| Описание | ||
Управлять округлением углов можно в визуальном режиме редактора Microsoft Expression Blend (рис. 2.2): (рис 2.2) Округление углов в визуальном режиме
Перемещая маркер, получаем тот же самый результат, однако среда подставляет свои значения атрибутов |
||
| № | Код | Вид в браузере |
| 2.1.5 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="Yellow" x:Name="Page"> <Rectangle Width="100" Height="30" Stroke="red" Canvas.Left="50" Canvas.Top="40" StrokeThickness="2"/> </Canvas> |
|
|
| Описание | ||
Исключение атрибута Fill делает внутреннюю часть фигуры прозрачной. Эквивалентная конструкция – задание атрибута Fill="transparent". Атрибут "Stroke" задает цвет контура. Атрибут "StrokeThickness" определяет толщину контура в пикселях. |
||
| № | Код | Вид в браузере |
| 2.1.6 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Stroke="red" Canvas.Left="50" Canvas.Top="40" StrokeThickness="2" Fill="skyblue"/> </Canvas> |
|
|
| Описание | ||
| Прямоугольник с контуром и заливкой | ||
| № | Код | Вид в браузере |
| 2.1.7 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Canvas.Left="50" Canvas.Top="40" Fill="blue"/> </Canvas> |
|
|
| Описание | ||
| Прямоугольник с заливкой и без контура | ||
| № | Код | Вид в браузере |
| 2.1.8 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="100" Height="30" Canvas.Left="50" Canvas.Top="40" Fill="yellow" RadiusY="10" RadiusX="10" Stroke="green" StrokeThickness="5" /> </Canvas> |
|
|
| Описание | ||
| Прямоугольник с заливкой, контуром и округлением углов | ||
Для создания эллипсов используется одноименный элемент Ellipse (рис. 2.3):
(рис 2.3) Элемент Ellipse
Атрибуты Canvas.Left и Canvas.Top определяют координаты верхнего левого угла фигуры, образуемой пересечением касательных к эллипсу. Атрибуты Width и Height определяют длины горизонтальной и вертикальной осей соответственно. По умолчанию фигура заливается белым цветом.
Определение расположения фигуры, реализованное с привязкой к верхней левой точке, сопряжено с некоторыми сложностями. На практике чаще всего задача расположить эллипс с центром в заданной точке. Впрочем, определить координаты центра не составляет никакого труда, например, для рассматриваемого случая, с учетом размеров 200*100 пикселей элемента Canvas схема будет выглядеть так (рис. 2.4):
(рис 2.4) Вычисление координат центра эллипса
Координаты центра получаются прибавлением половины значений ширины и высоты к соответствующим значениям координат верхнего левого угла фигуры.
Для получения окружности в XAML-графике используется элемент Ellipse с одинаковыми значениями ширины и высоты.
В табл. 2.2приводятся различные примеры элемента ellipse.
| № | Код | Вид в браузере |
|---|---|---|
| 2.2.1 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Ellipse Width="120" Height="80" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="40" Canvas.Top="10" /> </Canvas> |
|
|
| Описание | ||
| Эллипс с минимумом атрибутов. По умолчанию заливается белым цветом | ||
| № | Код | Вид в браузере |
| 2.2.2 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="Yellow" x:Name="Page"> <Ellipse Width="120" Height="80" Stroke="orange" Canvas.Left="40" Canvas.Top="10" StrokeThickness="4" /> </Canvas> |
|
|
| Описание | ||
| Эллипс с контуром и без заливки, т.е. с прозрачной внутренней областью | ||
| № | Код | Вид в браузере |
| 2.2.3 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Ellipse Width="120" Height="80" Canvas.Left="40" Canvas.Top="10" Fill="indigo" /> </Canvas> |
|
|
| Описание | ||
| Эллипс с заливкой и без контура | ||
| № | Код | Вид в браузере |
| 2.2.4 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Ellipse Width="120" Height="80" Canvas.Left="40" Canvas.Top="10" Fill="lightpink" Stroke="lightcoral" StrokeThickness="4" /> </Canvas> |
|
|
| Описание | ||
| Эллипс с контуром и заливкой | ||
| № | Код | Вид в браузере |
| 2.2.5 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Ellipse Width="80" Height="80" Canvas.Left="60" Canvas.Top="10" Fill="lightpink" Stroke="lightcoral" StrokeThickness="4" /> </Canvas> |
|
|
| Описание | ||
Окружность, получаемая заданием одинаковых значений Width и Height |
||
Один из самых простых элементов XAML – графики это линия, отрезок прямой, заключенной между двумя точками. Для ее создания задаются координаты начальной и конечной точек (рис. 2.5):
(рис 2.5) Элемент Line
По умолчанию, без задания атрибута StrokeThickness, рисуется линия толщиной в 1 пиксель. В табл. 2.3. приводятся различные примеры элемента line.
| № | Код | Вид в браузере |
|---|---|---|
| 2.3.1 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Line X1="20" Y1="10" X2="190" Y2="90" Stroke="black"/> </Canvas> |
|
|
| Описание | ||
| Линия с минимумом атрибутов. По умолчанию черного цвета толщиной 1 пикс | ||
| № | Код | Вид в браузере |
| 2.3.2 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Line X1="20" Y1="10" X2="190" Y2="90" Stroke="black" StrokeThickness="1"/> </Canvas> |
|
|
| Описание | ||
Линия с заданием цвета и толщины. Приведенное значение атрибута StrokeThickness совпадает с принятым по умолчанию |
||
| № | Код | Вид в браузере |
| 2.3.3 | ||
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Line X1="20" Y1="10" X2="190" Y2="90" Stroke="tomato" StrokeThickness=" 10"/> </Canvas> |
|
|
| Описание | ||
| Линия с заданием цвета и толщины | ||
Для рисования фигуры, состоящей из нескольких соединенных отрезков, можно воспользоваться элементом Line, задавая для каждого отрезка координаты пары точек – начальной и конечной. Однако, более удобным в данном случае, является применение элемента polyline, где конечная точка предыдущего отрезка служит начальной для последующего (рис. 2.6)
(рис 2.6) Элемент Polyline
Атрибут Points позволяет задавать пары координатных точек, разделенных пробелами. Для удобства восприятия кода координаты внутри пары записываются через запятую. Можно этого не делать, т.е все значения разделять пробелами:
<Polyline Points="20 10 180 10 20 90 180 90" />
По умолчанию, фигура заполняется заливкой. В табл. 2.4приводятся различные примеры элемента Polyline.
| № | Код | Вид в браузере |
|---|---|---|
| 2.4.1 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polyline Points="20,10 180,10 20, 90 180,90"
Fill="Black"/>
</Canvas>
|
|
|
| Описание | ||
| Ломаная с минимумом атрибутов. Пространство, лежащее внутри отрезков, заполняется черным цветом | ||
| № | Код | Вид в браузере |
| 2.4.2 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polyline Points="20,10 180,10 20, 90 180,90"
Fill="Black" Stroke="red"
StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Ломаная с заданием цвета и толщины контура | ||
| № | Код | Вид в браузере |
| 2.4.3 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polyline Points="20,10 180,10 20, 90 180,90"
Fill="lightpink" Stroke="red"
StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Фигура с контуром и заливкой | ||
| № | Код | Вид в браузере |
| 2.4.5 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polyline Points="20,10 180,10 20, 90 180,90"
Stroke="red" StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Фигура с минимальным набором атрибутов для рисования именно ломаной линии | ||
Элемент многоугольник, в отличие от элемента Polyline, предназначен для рисования фигур, заполненных заливкой. Конечно, с помощью атрибутов этого элемента можно рисовать только контура, но и в этом случае начальная и конечная точка будут соединяться автоматически (рис. 2.7):
(рис 2.7) Сравнение элементов Polyline и Polygon
| № | Код | Вид в браузере |
|---|---|---|
| 2.5.1 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="20,10 180,10 20, 90 180,90"
Fill="Black"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с тем же самым набором точек, что и в примере 2.4.1 | ||
| № | Код | Вид в браузере |
| 2.5.2 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="20,10 180,10 20, 90 180,90"
Fill="Black" Stroke="red"
StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с заданием цвета и толщины контура | ||
| № | Код | Вид в браузере |
| 2.5.3 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="20,10 180,10 20, 90 180,90"
Fill="lightpink" Stroke="red"
StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с контуром и заливкой | ||
| № | Код | Вид в браузере |
| 2.5.4 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="20,10 180,10 20, 90 180,90"
Stroke="red" StrokeThickness="3"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с контуром и без заливки | ||
| № | Код | Вид в браузере |
| 2.5.5 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="100,10 105.8,27.2 123.8,27.2 109.4,38
114.6,55.2 100,45 85.4,55.2 90.6,38
76.2,27.2 94.2,27.2"
Fill="red"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с заливкой и без контура. Дробные значения координат отделяются точкой | ||
| № | Код | Вид в браузере |
| 2.5.6 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Polygon Points="100,10 121.6,22.5 121.6,47.5
100,60 78.4,47.52 78.4,22.5"
Fill="dodgerblue" Stroke="blue"
StrokeThickness="5"/>
</Canvas>
|
|
|
| Описание | ||
| Многоугольник с заливкой и контуром. Дробные значения координат отделяются точкой | ||
До этого момента мы рассматривали XAML – документы, содержащие один объект. При расположении нескольких объектов в одном документе важен их z–order ). Представим себе, что у нас есть код, в котором создаются прямоугольник ( Rectangle ), полигон ( Polygon ) и эллипс ( Ellipse ):
<Rectangle Width="180" Height="80" Canvas.Left="10" Canvas.Top="10" Fill="green"/> <Polygon Points="20,20 180,20 20,90" Fill="blue" /> <Ellipse Width="50" Height="50" Canvas.Left="65" Canvas.Top="35" Fill="red" />
Строка кода, описывающая эллипс, располагается самой последней. На рисунке эти фигуры будут располагаться в обратном порядке – так, окружность будет самой первой в стопке объектов (рис. 2.8):
(рис 2.8) Вертикальный порядок последовательности элементов
Можно сделать простой вывод – фрагмент кода, представляющий какой-либо объект, добавленный позже всех, графически будет располагаться выше всех. В табл. 2.6 приводится несколько простых примеров, содержащих последовательности элементов.
| № | Код | Вид в браузере |
|---|---|---|
| 2.6.1 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Rectangle Width="180" Height="80"
Canvas.Left="10" Canvas.Top="10"
Fill="green"/>
<Polygon Points="20,20 180,20 20,90"
Fill="blue" />
<Ellipse Width="50" Height="50"
Canvas.Left="65" Canvas.Top="35"
Fill="red" />
</Canvas>
|
|
|
| Описание | ||
| Последовательность трех фигур – прямоугольника, полигона и окружности | ||
| № | Код | Вид в браузере |
| 2.6.2 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Ellipse Width="50" Height="50"
Canvas.Left="20" Canvas.Top="19"
troke="darkblue" StrokeThickness="4" />
<Ellipse Width="50" Height="50"
Canvas.Left="75" Canvas.Top="19"
Stroke="black" StrokeThickness="4" />
<Ellipse Width="50" Height="50"
Canvas.Left="130" Canvas.Top="19"
Stroke="red" StrokeThickness="4" />
<Ellipse Width="50" Height="50"
Canvas.Left="47" Canvas.Top="42"
Stroke="yellow" StrokeThickness="4" />
<Ellipse Width="50" Height="50"
Canvas.Left="102" Canvas.Top="42"
Stroke="green" StrokeThickness="4" />
</Canvas>
|
|
|
| Описание | ||
| Эмблема олимпийского движения. Следует обратить внимание на перекрытие колец | ||
| № | Код | Вид в браузере |
| 2.6.3 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<!-- Небо -->
<Rectangle Width="200" Height="70"
Canvas.Left="0" Canvas.Top="0" Fill="skyblue"/>
<!--Кольца радуги -->
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="20"
Stroke="red" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="24"
Stroke="orange" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="28"
Stroke="yellow" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="32"
Stroke="green" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="36"
Stroke="deepskyblue" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="40"
Stroke="blue" StrokeThickness="4" />
<Ellipse Width="210" Height="120"
Canvas.Left="-5" Canvas.Top="44"
Stroke="purple" StrokeThickness="4" />
<!--Солнце -->
<Ellipse Width="20" Height="20"
Canvas.Left="2" Canvas.Top="2"
Fill="orangered" />
<!--Лучи солнца -->
<Line X1="12" Y1="12"
X2="12" Y2="40" Stroke="orangered"
StrokeThickness="2"/>
<Line X1="12" Y1="12"
X2="40" Y2="12" Stroke="orangered"
StrokeThickness="2"/>
<Line X1="12" Y1="12"
X2="30" Y2="30" Stroke="orangered"
StrokeThickness="2"/>
<!--Земля-->
<Rectangle Width="200" Height="30"
Canvas.Left="0" Canvas.Top="70"
Fill="lightgreen"/>
<!--Убираем выступающие части радуги-->
<Rectangle Width="210" Height="70"
Canvas.Left="0" Canvas.Top="100"
Fill="white"/>
<Rectangle Width="200" Height="100"
Canvas.Left="200" Canvas.Top="0"
Fill="white"/>
</Canvas>
|
|
|
| Описание | ||
| Простой пейзаж. Здесь уже становится сложно следить за блоками кода, отражающими разные объекты, поэтому были добавлены комментарии | ||
Всякий раз при добавлении фигуры мы определяли ее заливку, цвет контура и его толщину. А можно ли один раз описать эти свойства, а затем много раз применять их для множества фигур? XAML поддерживает стили, подобные обычным CSS-таблицам. Но реализация поддержки стилей различна для WPF-приложений и Silverlight-сайтов – по крайней мере, на момент написания этого курса. Для начала рассмотрим стили в WPF, поскольку их проще понять.
Первое, что нужно сделать – это открыть справку к редактору Microsoft Expression Blend и посмотреть раздел "Styles and templates" (рис. 2.9):
(рис 2.9) Раздел "Styles and templates".
В этом разделе описываются визуальные средства редактора, позволяющие создавать стили. После знакомства с ними приступим к изучению кода. Это обычный код, содержащий прямоугольник:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Style_in_WPF.Window1" x:Name="Window" Title="Window1" Width="640" Height="480"> <Grid x:Name="LayoutRoot"> <Rectangle Stroke="red" StrokeThickness="2" Fill="skyblue" Width="100" Height="30" Margin="0,0,0,0" /> </Grid> </Window>
При запуске приложения фигура появляется на форме (рис. 2.10):
(рис 2.10) WPF-приложение с обычным заданием свойств фигуры
Добавим описание стиля фигуры, применим это описание к исходному прямоугольнику и его двум копиям:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Style_in_WPF.Window1"
x:Name="Window"
Title="Window1"
Width="640" Height="480"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Window.Resources>
<Style
x:Key="MyStyle" TargetType="{x:Type Rectangle}">
<Setter
Property="Stroke"
Value="Red" />
<Setter
Property="StrokeThickness"
Value="2" />
<Setter
Property="Fill"
Value="skyblue" />
</Style>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Rectangle Style = "{StaticResource MyStyle}"
Width="100" Height="30"
Margin="0,-100,0,0" />
<Rectangle Style = "{StaticResource MyStyle}"
Width="100" Height="30"
Margin="0,0,0,0" />
<Rectangle Style = "{StaticResource MyStyle}"
Width="100" Height="30"
Margin="0,100,0,0" />
</Grid>
</Window>
В результате на форму выводится три одинаковых фигуры (рис. 2.11):
(рис 2.11) WPF-приложение с заданием стилей фигур
Тег Style помещается внутри секции Window.Resources. С помощью атрибута x:Key определяется имя стиля, а атрибут TargetType задает тип элемента, к которому этот стиль будет применяться. Внутри тега Setter описываются пары "Свойство – значение". Для применения готового стиля к фигуре указывается атрибут Style внутри описания элемента.
Определение стилей для Silverlight сайтов осуществляется несколько иначе. Для примера, попробуем использовать предыдущее описание в Silverlight-проекте (рис. 2.12):
(рис 2.12) Использование WPF-стилей в Silverlight-приложении
Среда указывает, что тег Style не поддерживается в текущем приложении. Вообще, для создания стилей в данном случае лучше использовать Visual Studio 2008. Создаем новый проект "Silverlight Application", открываем шаблон "App.xaml" и помещаем в него описание стиля внутри тега Application.Resources:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Style_in_Silverlight_site.App"
>
<Application.Resources>
<Style
x:Key="MyStyle" TargetType="Rectangle">
<Setter
Property="Stroke"
Value="Red" />
<Setter
Property="StrokeThickness"
Value="2" />
<Setter
Property="Fill"
Value="skyblue" />
</Style>
</Application.Resources>
</Application>
Можно заметить, что синтаксис очень похож на код WPF-приложения. Среда разработки в момент написания кода будет выглядеть так (рис. 2.13):
(рис 2.13) Задание стиля в файле "App.xaml".
Для использования созданного стиля переходим к файлу "Page.xaml", добавляем внутри документа прямоугольник со ссылкой на стиль:
<UserControl x:Class="Style_in_Silverlight_site.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<Rectangle Style = "{StaticResource MyStyle}"
Width="100"
Height="30" Canvas.Left="50"
Canvas.Top="40" />
</Grid>
</UserControl>
Компилируем приложение, используя сочетание клавиш "CTRL+SHIFT + B", переходим в режим "Horizontal Split" и видим, что стиль был применен к фигуре (рис. 2.14):
(рис 2.14) Фигура с применением стиля в режиме "Horizontal Split"
Запускаем приложение, нажимая клавишу F5 (рис. 2.15):
(рис 2.15) Фигура с применением стиля в окне браузера
Подобно обычным CSS-стилям, поддерживается каскадное задание свойств. Переопределим цвет заливки прямоугольника:
<UserControl x:Class="Style_in_Silverlight_site.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<Rectangle Style = "{StaticResource MyStyle}" Width="100"
Height="30" Canvas.Left="50"
Canvas.Top="40" Fill="Green" />
</Grid>
</UserControl>
Теперь, несмотря на описание в файле "App.xaml", фигура заполняется зеленым цветом (рис. 2.16):
(рис 2.16) Переопределение стиля
Графика XAML содержит средства для объединения нескольких элементов в одну фигуру, для которой можно задавать единые атрибуты, название, стили и т.д. Рассмотрим следующий код:
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="White" x:Name="Page"> <Rectangle Width="180" Height="80" Canvas.Left="10" Canvas.Top="10" Fill="skyblue" Stroke="blue" StrokeThickness="2"/> <Ellipse Width="50" Height="50" Canvas.Left="75" Canvas.Top="25" Fill="skyblue" Stroke="blue" StrokeThickness="2" /> </Canvas>
В браузере отображается эллипс, наложенный на прямоугольник (рис. 2.17):
(рис 2.17) Элементы без группы
Прямоугольник и эллипс представляют собой совершенно независимые фигуры – для каждой из которых нужно задавать атрибуты Fill, Stroke и StrokeThickness. Для формирования фигуры используется следующий код:
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Path Fill="skyblue" Stroke="blue"
StrokeThickness="2">
<Path.Data>
<GeometryGroup FillRule="NonZero">
<EllipseGeometry Center="100,50"
RadiusX="25" RadiusY="25" />
<RectangleGeometry Rect="10,10 180 80" />
</GeometryGroup>
</Path.Data>
</Path>
</Canvas>
Все содержимое располагается внутри тега Path. Изучением элемента Path мы будем заниматься в следующей лекции. Пока его можно рассматривать как некоторый контейнер, внутри которого располагается код других элементов. Заметим, что свойства контейнера применяются для всех объектов. В браузере фигуры выглядят точно также. Теги элементов Ellipse и Rectangle трансформировались в EllipseGeometry и RectangleGeometry.
Пакет Microsoft Expression Blend позволяет увидеть еще один способ группировки элементов. В визуальном режиме выделяем исходные элементы, в главном меню выбираем пункт "Object \ Group Into \ Canvas" (рис. 2.18):
(рис 2.18) Группировка фигур "Object \ Group Into \ Canvas".
В результате выполнения этого действия элементы помещаются внутри дополнительного тега Canvas:
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<Canvas Width="180" Height="80"
Canvas.Left="10" Canvas.Top="10">
<Rectangle Width="180" Height="80"
Fill="skyblue" Stroke="blue"
StrokeThickness="2"/>
<Ellipse Width="50" Height="50"
Fill="skyblue" Stroke="blue"
StrokeThickness="2" Canvas.Left="65"
Canvas.Top="15" />
</Canvas>
</Canvas>
Еще один способ объединения фигур, предлагаемый пакетом Microsoft Expression Blend, содержит средства формирования новых фигур. Например, выделим исходные элементы и выберем пункт меню "Object \ Combine \ Exclude Overlap" (рис. 2.19):
(рис 2.19) Объединение фигур " Object \ Combine \ Exclude Overlap ".
В результате выполнения этого действия мы получаем прямоугольник с "дыркой" (рис. 2.20):
(рис 2.20) Результирующая фигура
Среда преобразовала исходные элементы в объект Path, содержащий множество координат:
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="200" Height="100" Background="Yellow" x:Name="Page"> <Path Width="180" Height="80" Fill="skyblue" Stretch="Fill" Stroke="blue" StrokeThickness="2" Canvas.Left="10" Canvas.Top="10" Data="M90,16.000001 C76.745166,16.000001 66,26.745167 66,40.000001 66,53.254834 76.745166,64.000001 90,64.000001 C103.25483,64.000001 114,53.254834 114,40.000001 C114,26.745167 103.25483,16.000001 90,16.000001 z M1,1 L179,1 179,79.000001 1,79.000001 1,1 z"/> </Canvas>
Подобный код трудно понимать без визуальных средств.
Рассмотрим теперь эту же самую группу меню "Object \ Combine" применительно к WPF-приложениям (рис. 2.21):
(рис 2.21) Группа "Object \ Combine".
При использовании визуальных средств каждый из пунктов этого меню по-прежнему преобразовывает исходные фигуры в объект Path. Результат определяются следующим образом (рис. 2.22):
(рис 2.22) 1. – Фигуры до объединения, 2. – Объединение (Unite (Union)), 3. – Деление (Divide (-)), 4. – Пересечение (Intersect (Intersect)), 5. – Удаление совмещенного (Exclude Overlap (Xor)), 6. – Вычитание (Subtract (Exclude)).
Однако в WPF-приложениях имеется синтаксис, позволяющий получать тот же самый результат в виде читабельного кода. Такие примеры приводятся в табл. 2.7.
| № | Код | Вид в браузере |
|---|---|---|
| 2.7.1 | ||
<Window xmlns="http://schemas.microsoft.com/ winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" x:Class="Group_WPF.Window1" x:Name="Window" Title="Исходные фигуры" Width="215" Height="200"> <Grid x:Name="LayoutRoot"> <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="1" Fill="#2b2b2b" Margin="25,25,75,25" /> <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="1" Fill="#f47419" Margin="75,25,25,25" /> </Grid> </Window> |
|
|
| Описание | ||
| Исходные фигуры, причем оранжевый эллипс расположен над серым | ||
| № | Код | Вид в браузере |
| 2.7.2 | ||
<Window
xmlns="http://schemas.microsoft.com/winfx/
2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/
winfx/2006/xaml"
x:Class="Group_WPF.Window1"
x:Name="Window"
Title="Union"
Width="215" Height="200">
<Grid x:Name="LayoutRoot">
<Path Stroke="Black"
StrokeThickness="1"
Fill="#f47419">
<Path.Data>
<CombinedGeometry GeometryCombineMode="
Union">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50"
RadiusY="50"
Center="75,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
|
|
|
| Описание | ||
| Значение "Union" атрибута GeometryCombineMode | ||
| № | Код | Вид в браузере |
| 2.7.3 | ||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/ xaml/presentation" xmlns:x="http://schemas.microsoft.com/ winfx/2006/xaml" x:Class="Group_WPF.Window1" x:Name="Window" Title="Original" Width="215" Height="200"> <Grid x:Name="LayoutRoot"> <Path Margin="25,32,24,32" Fill="#f47419" Stretch="Fill" Stroke="Black" StrokeThickness="1" Data="M100,0.5 C127.3381,0.49999893 149.5,22.661904 149.5,49.999999 C149.5,77.338096 127.3381,99.499999 100, 99.499999 C90.869587,99.499999 82.316544, 97.027984 75,92.671836 89.669403,84.1193 99.5,68.207679 99.5,49.999999 99.5, 31.792319 89.669403,15.880696 75,7.3281606 C82.316544,2.9720165 90.869587,0.49999893 100,0.5 z M75,7.3281606 C89.669403,15.880696 99.5,31.792319 99.5,49.999999 99.5,68.207679 89.669403,84.1193 75,92.671836 C60.330596, 84.1193 50.5,68.207679 50.5,49.999999 C50.5, 31.792319 60.330596,15.880696 75,7.3281606 z M49.999999,0.5 C59.130414,0.49999893 67.683458,2.9720165 75,7.3281606 C60.330596, 15.880696 50.5,31.792319 50.5,49.999999 C50.5,68.207679 60.330596,84.1193 75, 92.671836 C67.683458,97.027984 59.130414, 99.499999 49.999999,99.499999 22.661905, 99.499999 0.5,77.338096 0.5,49.999999 0.5, 22.661904 22.661905,0.49999893 49.999999, 0.5 z"/> </Grid> </Window> |
|
|
| Описание | ||
Для значения "Divide" пункта меню нет программного аналога. Здесь мы в визуальном режиме выбрали этот пункт, а среда сгенерировала объект Path |
||
| № | Код | Вид в браузере |
| 2.7.4 | ||
<Window
xmlns="http://schemas.microsoft.com/
winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/
winfx/2006/xaml"
x:Class="Group_WPF.Window1"
x:Name="Window"
Title="Intersect"
Width="215" Height="200">
<Grid x:Name="LayoutRoot">
<Path Stroke="Black" StrokeThickness="1"
Fill="#f47419">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Intersect">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
|
|
|
| Описание | ||
| Значение "Intersect" атрибута GeometryCombineMode | ||
| № | Код | Вид в браузере |
| 2.7.5 | ||
<Window
xmlns="http://schemas.microsoft.com/winfx/
2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/
winfx/2006/xaml"
x:Class="Group_WPF.Window1"
x:Name="Window"
Title="Xor"
Width="215" Height="200">
<Grid x:Name="LayoutRoot">
<Path Stroke="Black" StrokeThickness="1"
Fill="#f47419">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Xor">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
|
|
|
| Описание | ||
| Значение "Xor" атрибута GeometryCombineMode | ||
| № | Код | Вид в браузере |
| 2.7.6 | ||
<Window
xmlns="http://schemas.microsoft.com/
winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/
winfx/2006/xaml"
x:Class="Group_WPF.Window1"
x:Name="Window"
Title="Exclude"
Width="215" Height="200">
<Grid x:Name="LayoutRoot">
<Path Stroke="Black" StrokeThickness="1"
Fill="#f47419">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50"
RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50"
Center="75,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
|
|
|
| Описание | ||
| Значение "Exclude" атрибута GeometryCombineMode | ||
Мы видим, что в WPF-приложениях можно формировать фигуры с помощью возможностей, которые всегда были особенностями графических пакетов, например, таких как CorelDRAW (рис. 2.23):
(рис 2.23) Объединение фигур в пакете CorelDRAW с помощью группы меню "Arrange \ Shaping".
Задания цвета с помощью имени, например "Red" или "Blue" выглядит в коде всегда понятней, по сравнению со своим шестнадцатеричным индексом. XAML-графика поддерживает 142 именованных цвета, которые представлены в табл. 2.8.
| № | Образец | Название | Шестнадцатеричный индекс цвета в модели RGB |
|---|---|---|---|
| 1 |
|
AliceBlue | #f0f8ff |
| 2 |
|
AntiqueWhite | #faebd7 |
| 3 |
|
Aqua | #00ffff |
| 4 |
|
Aquamarine | #7fffd4 |
| 5 |
|
Azure | #f0ffff |
| 6 |
|
Beige | #f5f5dc |
| 7 |
|
Bisque | #ffe4c4 |
| 8 |
|
Black | #000000 |
| 9 |
|
BlanchedAlmond | #ffebcd |
| 10 |
|
Blue | #0000ff |
| 11 |
|
BlueViolet | #8a2be2 |
| 12 |
|
Brown | #a52a2a |
| 13 |
|
BurlyWood | #deb887 |
| 14 |
|
CadetBlue | #5f9ea0 |
| 15 |
|
Chartreuse | #7fff00 |
| 16 |
|
Chocolate | #d2691e |
| 17 |
|
Coral | #ff7f50 |
| 18 |
|
CornflowerBlue | #6495ed |
| 19 |
|
Cornsilk | #fff8dc |
| 20 |
|
Crimson | #dc143c |
| 21 |
|
Cyan | #00ffff |
| 22 |
|
DarkBlue | #00008b |
| 23 |
|
DarkCyan | #008b8b |
| 24 |
|
DarkGoldenrod | #b8860b |
| 25 |
|
DarkGray | #a9a9a9 |
| 26 |
|
DarkGreen | #006400 |
| 27 |
|
DarkKhaki | #bdb76b |
| 28 |
|
DarkMagenta | #8b008b |
| 29 |
|
DarkOliveGreen | #556b2f |
| 30 |
|
DarkOrange | #ff8c00 |
| 31 |
|
DarkOrchid | #9932cc |
| 32 |
|
DarkRed | #8b0000 |
| 33 |
|
DarkSalmon | #e9967a |
| 34 |
|
DarkSeaGreen | #8fbc8f |
| 35 |
|
DarkSlateBlue | #483d8b |
| 36 |
|
DarkSlateGray | #2f4f4f |
| 37 |
|
DarkTurquoise | #00ced1 |
| 38 |
|
DarkViolet | #9400d3 |
| 39 |
|
DeepPink | #ff1493 |
| 40 |
|
DeepSkyBlue | #00bfff |
| 41 |
|
DimGray | #696969 |
| 42 |
|
DodgerBlue | #1e90ff |
| 43 |
|
Firebrick | #b22222 |
| 44 |
|
FloralWhite | #fffaf0 |
| 45 |
|
ForestGreen | #228b22 |
| 46 |
|
Fuchsia | #ff00ff |
| 47 |
|
Gainsboro | #dcdcdc |
| 48 |
|
GhostWhite | #f8f8ff |
| 49 |
|
Gold | #ffd700 |
| 50 |
|
Goldenrod | #daa520 |
| 51 |
|
Gray | #808080 |
| 52 |
|
Green | #008000 |
| 53 |
|
GreenYellow | #adff2f |
| 54 |
|
HoneyDew | #f0fff0 |
| 55 |
|
HotPink | #ff69b4 |
| 56 |
|
IndianRed | #cd5c5c |
| 57 |
|
Indigo | #4b0082 |
| 58 |
|
Ivory | #fffff0 |
| 59 |
|
Khaki | #f0e68c |
| 60 |
|
Lavender | #e6e6fa |
| 61 |
|
LavenderBlush | #fff0f5 |
| 62 |
|
LawnGreen | #7cfc00 |
| 63 |
|
LemonChiffon | #fffacd |
| 64 |
|
LightBlue | #add8e6 |
| 65 |
|
LightCoral | #f08080 |
| 66 |
|
LightCyan | #e0ffff |
| 67 |
|
LightGoldenrodYellow | #fafad2 |
| 68 |
|
LightGray | #d3d3d3 |
| 69 |
|
Lightgreen | #90ee90 |
| 70 |
|
LightPink | #ffb6c1 |
| 71 |
|
LightSalmon | #ffa07a |
| 72 |
|
LightSeaGreen | #20b2aa |
| 73 |
|
LightSkyBlue | #87cefa |
| 74 |
|
LightSlateGray | #778899 |
| 75 | |||
| 76 |
|
LightSteelBlue | #b0c4de |
| 77 |
|
LightYellow | #ffffe0 |
| 78 |
|
Lime | #00ff00 |
| 79 |
|
LimeGreen | #32cd32 |
| 80 |
|
Linen | #faf0e6 |
| 81 |
|
Magenta | #ff00ff |
| 82 |
|
Maroon | #800000 |
| 83 |
|
MediumAquamarine | #66cdaa |
| 84 |
|
MediumBlue | #0000cd |
| 85 |
|
MediumOrchid | #ba55d3 |
| 86 |
|
MediumPurple | #9370db |
| 87 |
|
MediumSeaGreen | #3cb371 |
| 88 |
|
MediumSlateBlue | #7b68ee |
| 89 |
|
MediumSpringGreen | #00fa9a |
| 90 |
|
MediumTurquoise | #48d1cc |
| 91 |
|
MediumVioletRed | #c71585 |
| 92 |
|
MidnightBlue | #191970 |
| 93 |
|
MintCream | #f5fffa |
| 94 |
|
MistyRose | #ffe4e1 |
| 95 |
|
Moccasin | #ffe4b5 |
| 96 |
|
NavajoWhite | #ffdead |
| 97 |
|
Navy | #000080 |
| 98 |
|
OldLace | #fdf5e6 |
| 99 |
|
Olive | #808000 |
| 100 |
|
OliveDrab | #6b8e23 |
| 101 |
|
Orange | #ffa500 |
| 102 |
|
OrangeRed | #ff4500 |
| 103 |
|
Orchid | #da70d6 |
| 104 |
|
PaleGoldenrod | #eee8aa |
| 105 |
|
PaleGreen | #98fb98 |
| 106 |
|
PaleTurquoise | #afeeee |
| 107 |
|
PaleVioletRed | #db7093 |
| 108 |
|
PapayaWhip | #ffefd5 |
| 109 |
|
PeachPuff | #ffdab9 |
| 110 |
|
Peru | #cd853f |
| 111 |
|
Pink | #ffc0cb |
| 112 |
|
Plum | #dda0dd |
| 113 |
|
PowderBlue | #b0e0e6 |
| 114 |
|
Purple | #800080 |
| 115 |
|
Red | #ff0000 |
| 116 |
|
RosyBrown | #bc8f8f |
| 117 |
|
RoyalBlue | #4169e1 |
| 118 |
|
SaddleBrown | #8b4513 |
| 119 |
|
Salmon | #fa8072 |
| 120 |
|
SandyBrown | #f4a460 |
| 121 |
|
Seagreen | #2e8b57 |
| 122 |
|
SeaShell | #fff5ee |
| 123 |
|
Sienna | #a0522d |
| 124 |
|
Silver | #c0c0c0 |
| 125 |
|
SkyBlue | #87ceeb |
| 126 |
|
SlateBlue | #6a5acd |
| 127 |
|
SlateGray | #708090 |
| 128 |
|
#fffafa | |
| 129 |
|
SpringGreen | #00ff7f |
| 130 |
|
SteelBlue | #4682b4 |
| 131 |
|
Tan | #d2b48c |
| 132 |
|
Teal | #008080 |
| 133 |
|
Thistle | #d8bfd8 |
| 134 |
|
Tomato | #ff6347 |
| 135 |
|
transparent | #00FFFFFF |
| 136 |
|
Turquoise | #40e0d0 |
| 137 |
|
Violet | #ee82ee |
| 138 |
|
Wheat | #f5deb3 |
| 139 |
|
White | #ffffff |
| 140 |
|
WhiteSmoke | #f5f5f5 |
| 141 |
|
Yellow | #ffff00 |
| 142 |
|
Yellowgreen | #9acd32 |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.