Полотно в WPF
Автор: Махеш Чанд (Mahesh Chand)
В этой статье будет показано, как использовать область полотна WPF с применением XAML и C#.
Область полотна используется для размещения дочерних элементов с помощью координат, связанных с областью полотна. Далее приводятся некоторые свойства областей полотна.
- Значения по умолчанию для свойство полотна Height и Width — 0. Если эти значения не установить, то нельзя будет увидеть полотно, пока не будет задано автоматическое изменение размеров дочерних элементов.
- Размеры дочерних элементов на полотне не изменяются.
- Вертикальное и горизонтальное выравнивание дочерних элементов не работает. Дочерние элементы размещаются в положениях, заданных свойствами полотна Left, Top, Right и Bottom.
- Поля работают частично. Если установлено свойство полотна Left, то свойство Right не работает. Если установлено свойство полотна Top, то свойство Bottom не работает.
Элемент Canvas в XAML представляет элемент управления Canvas.
<Canvas/>
Элемент управления Canvas имеет три свойства. Свойство Left представляет расстояние между левой стороной элемента управления и его родительским контейнером Canvas. Свойство Top представляет расстояние между верхней стороной элемента управления и его родительским контейнером Canvas.
Код, приведенный в листинге 1, создает элемент управления Canvas, добавляет три элемента управления Rectangle и размещает их с помощью свойств элемента управления Canvas.
<Canvas Background="LightCyan" >
<Rectangle
Canvas.Left="10" Canvas.Top="10"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10" Fill="Red" />
<Rectangle
Canvas.Left="60" Canvas.Top="60"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10" Fill="Blue" />
<Rectangle
Canvas.Left="110" Canvas.Top="110"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10" Fill="Green" />
</Canvas>
Листинг 1
Результат этого кода будет выглядеть аналогично показанному на рисунке 1.
.gif)
Рисунок 1
Класс Canvas в WPF представляет элемент управления Canvas. Приведенный в следующем листинге код динамически создает элемент управления CanvasPanel, добавляет в него три элемента управления Rectangle и устанавливает их положение слева и справа c помощью методов Canvas.SetLeft и Canvas.SetTop. Результат кода, приведенного в этом листинге, показан на рисунке 1.
private void CreateDynamicCanvasPanel()
{
// Create a Canvas Panel control
Canvas canvasPanel = new Canvas();
// Set Canvas Panel properties
canvasPanel.Background = new SolidColorBrush(Colors.LightCyan );
// Add Child Elements to Canvas
Rectangle redRectangle = new Rectangle();
redRectangle.Width = 200;
redRectangle.Height = 200;
redRectangle.Stroke = new SolidColorBrush(Colors.Black);
redRectangle.StrokeThickness = 10;
redRectangle.Fill = new SolidColorBrush(Colors.Red);
// Set Canvas position
Canvas.SetLeft(redRectangle, 10);
Canvas.SetTop(redRectangle, 10);
// Add Rectangle to Canvas
canvasPanel.Children.Add(redRectangle);
// Add Child Elements to Canvas
Rectangle blueRectangle = new Rectangle();
blueRectangle.Width = 200;
blueRectangle.Height = 200;
blueRectangle.Stroke = new SolidColorBrush(Colors.Black);
blueRectangle.StrokeThickness = 10;
blueRectangle.Fill = new SolidColorBrush(Colors.Blue);
// Set Canvas position
Canvas.SetLeft(blueRectangle, 60);
Canvas.SetTop(blueRectangle, 60);
// Add Rectangle to Canvas
canvasPanel.Children.Add(blueRectangle);
// Add Child Elements to Canvas
Rectangle greenRectangle = new Rectangle();
greenRectangle.Width = 200;
greenRectangle.Height = 200;
greenRectangle.Stroke = new SolidColorBrush(Colors.Black);
greenRectangle.StrokeThickness = 10;
greenRectangle.Fill = new SolidColorBrush(Colors.Green);
// Set Canvas position
Canvas.SetLeft(greenRectangle, 110);
Canvas.SetTop(greenRectangle, 110);
// Add Rectangle to Canvas
canvasPanel.Children.Add(greenRectangle);
// Set Grid Panel as content of the Window
RootWindow.Content = canvasPanel;
}
Листинг 2
Z-порядок элемента управления задает его расположение впереди или позади другого пересекающегося с ним элемента управления. Z-порядок по умолчанию соответствует тому порядку, в котором элементы создаются. Свойство ZIndex элемента управления Canvas представляет Z-порядок элемента управления. Максимальное значение ZIndex — 32766.
На рисунке 1 Z-порядок красного, синего и зеленого прямоугольников соответственно 1, 2 и 3. Теперь код, приведенный в листинге 2, изменяет Z-порядок этих прямоугольников с помощью свойства ZIndex элемента управления Canvas.
Фрагмент кода, приведенный в листинге 2, устанавливает положение элемента управления Canvas в левом верхнем углу страницы.
<Canvas Background="LightCyan" >
<Rectangle
Canvas.Left="10" Canvas.Top="10"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10"
Fill="Red" Canvas.ZIndex="2" />
<Rectangle
Canvas.Left="60" Canvas.Top="60"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10"
Fill="Blue" Canvas.ZIndex="1" />
<Rectangle
Canvas.Left="110" Canvas.Top="110"
Height="200" Width="200"
Stroke="Black" StrokeThickness="10"
Fill="Green" Canvas.ZIndex="3" />
</Canvas>
Листинг 3
Новый результат выглядит, как показано на рисунке 2, где синий прямоугольник находится под красным, а зеленый прямоугольник располагается поверх всех остальных.
.gif)
Рисунок 2