public ref class Canvas : System::Windows::Controls::Panel
public class Canvas : System.Windows.Controls.Panel
type Canvas = class
inherit Panel
Public Class Canvas
Inherits Panel
Canvas
以下示例生成三个
Rectangle
元素,每个元素 100 像素。 第一个
Rectangle
为红色,其左上角 (
x, y
) 位置指定为 (0, 0) 。 第二
Rectangle
个是绿色的,它的左上角位置是 (100, 100) ,就在第一个正方形的下方和右侧。 第三
Rectangle
个是蓝色,它的左上方位置是 (50, 50) 。 因此,第三个
Rectangle
涵盖第一
Rectangle
个的右下象限和第二个的左上象限。 由于第三
Rectangle
个是最后一个布局,因此它似乎位于其他两个正方形的顶部 - 也就是说,重叠部分假定第三
Rectangle
个 。
// Create the application's main window
mainWindow = new Window ();
mainWindow.Title = "Canvas Sample";
// Create the Canvas
myParentCanvas = new Canvas();
myParentCanvas.Width = 400;
myParentCanvas.Height = 400;
// Define child Canvas elements
myCanvas1 = new Canvas();
myCanvas1.Background = Brushes.Red;
myCanvas1.Height = 100;
myCanvas1.Width = 100;
Canvas.SetTop(myCanvas1, 0);
Canvas.SetLeft(myCanvas1, 0);
myCanvas2 = new Canvas();
myCanvas2.Background = Brushes.Green;
myCanvas2.Height = 100;
myCanvas2.Width = 100;
Canvas.SetTop(myCanvas2, 100);
Canvas.SetLeft(myCanvas2, 100);
myCanvas3 = new Canvas();
myCanvas3.Background = Brushes.Blue;
myCanvas3.Height = 100;
myCanvas3.Width = 100;
Canvas.SetTop(myCanvas3, 50);
Canvas.SetLeft(myCanvas3, 50);
// Add child elements to the Canvas' Children collection
myParentCanvas.Children.Add(myCanvas1);
myParentCanvas.Children.Add(myCanvas2);
myParentCanvas.Children.Add(myCanvas3);
// Add the parent Canvas as the Content of the Window Object
mainWindow.Content = myParentCanvas;
mainWindow.Show ();
WindowTitle = "Canvas Sample"
'Create a Canvas as the root Panel
Dim myParentCanvas As New Canvas()
myParentCanvas.Width = 400
myParentCanvas.Height = 400
' Define child Canvas elements
Dim myCanvas1 As New Canvas()
myCanvas1.Background = Brushes.Red
myCanvas1.Height = 100
myCanvas1.Width = 100
Canvas.SetTop(myCanvas1, 0)
Canvas.SetLeft(myCanvas1, 0)
Dim myCanvas2 As New Canvas()
myCanvas2.Background = Brushes.Green
myCanvas2.Height = 100
myCanvas2.Width = 100
Canvas.SetTop(myCanvas2, 100)
Canvas.SetLeft(myCanvas2, 100)
Dim myCanvas3 As New Canvas()
myCanvas3.Background = Brushes.Blue
myCanvas3.Height = 100
myCanvas3.Width = 100
Canvas.SetTop(myCanvas3, 50)
Canvas.SetLeft(myCanvas3, 50)
' Add child elements to the Canvas' Children collection
myParentCanvas.Children.Add(myCanvas1)
myParentCanvas.Children.Add(myCanvas2)
myParentCanvas.Children.Add(myCanvas3)
' Add the parent Canvas as the Content of the Window Object
Me.Content = myParentCanvas
<Page WindowTitle="Canvas Sample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Canvas Height="400" Width="400">
<Canvas Height="100" Width="100" Top="0" Left="0" Background="Red"/>
<Canvas Height="100" Width="100" Top="100" Left="100" Background="Green"/>
<Canvas Height="100" Width="100" Top="50" Left="50" Background="Blue"/>
</Canvas>
</Page>
包含
Canvas
对象的集合
UIElement
,这些对象位于 属性中
Children
。
Canvas
是唯一没有固有布局特征的面板元素。
Canvas
的默认值
Height
和
Width
属性为零,除非它是自动调整其子元素大小的元素的子元素。 的
Canvas
子元素永远不会调整大小,它们只是定位在其指定的坐标处。 这为不需要或不需要固有的大小调整约束或对齐的情况提供了灵活性。 对于希望自动调整子内容的大小和对齐情况,通常最好使用
Grid
元素。
属性
ZIndex
确定共享相同坐标空间的子元素的显示顺序。 一个子元素的较高
ZIndex
值指示此元素将出现在具有较低值的另一个子元素上方。
如果指定它们,附加属性
Canvas.Top
或
Canvas.Left
将优先于
Canvas.Bottom
或
Canvas.Right
属性。
的
Canvas
子元素始终具有所需的完整大小。 因此,垂直对齐和水平对齐在 内
Canvas
不起作用。
Canvas
是可用于子内容的绝对定位的顶级布局控件。 对于绘画和绘图,可以使用画笔,并且不必使用
Canvas
。 有关详细信息,请参阅
使用纯色和渐变进行绘制概述
。
默认情况下,面板元素不接收焦点。 若要强制面板元素接收焦点,请将
Focusable
属性设置为
true
。
为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。 将
handledEventsToo
指定为
true
,可为已标记为由事件路由中的其他元素处理的路由事件调用所提供的处理程序。
(继承自
UIElement
)
定位子元素,并确定
UIElement
的大小。 父元素从它们的
ArrangeCore(Rect)
实现(或者是 WPF 框架级别等效项)调用此方法,以便形成递归布局更新。 此方法产生第二次布局更新。
(继承自
UIElement
)
对指定依赖属性的值进行强制。 通过对调用方
DependencyObject
上存在的依赖属性的属性元数据中所指定的任何
CoerceValueCallback
函数进行调用来完成此操作。
(继承自
DependencyObject
)
更新
UIElement
的
DesiredSize
。 父元素从其自身的
MeasureCore(Size)
实现调用此方法以形成递归布局更新。 调用此方法构成布局更新的第一个处理过程(“测量”处理过程)。
(继承自
UIElement
)
每当更新此
FrameworkElement
的任何依赖属性的有效值时调用。 将在自变量参数中报告已更改的特定依赖属性。 重写
OnPropertyChanged(DependencyPropertyChangedEventArgs)
。
(继承自
FrameworkElement
)
支持
FrameworkElement
的专用子类中的增量布局实现。 如果子元素包含无效属性,且该属性在元数据中标记为影响布局过程中父元素的测量或排列过程的因素,则调用
ParentLayoutInvalidated(UIElement)
。
(继承自
FrameworkElement
)