您的位置:首页 > 其它

跟着小王学习wpf系列之九 Canvas

2011-04-04 00:36 246 查看
下面来讨论下一个控件:Canvas

Canvas是一个具有指定摆放位置的控件,当你将其他子控件摆放进Canvas中的时候,需要指定这个子控件相对于Canvas的位置,所以一般情况下对于Canvas我们也指定大小。(width,height)。

设定控件在Canvas中的位置,和grid中设定方式比较相似,你需要使用静态SetLeft,SetTop等来设定距离Canvas边界的距离(单位为无设备无关的长度单位)。

如果你将一个控件加入到Canvas中一般他会自己根据你的设定自己调整,但是对于Shape类,他们一般都有严格的尺寸。你必须指定好。

让Canvas上的子控件之间相互层叠也是很有用的,在其他控件中,子控件层叠可能导致一些不可预知的问题,但是在Canvas中不会出现,因为每个控件都有严格的定位。

public MyWindow()

{

Title = "Canvas Button";

Button btn = new Button();

btn.HorizontalAlignment = HorizontalAlignment.Center;

btn.VerticalAlignment = VerticalAlignment.Center;

Content = btn;

Canvas canvas = new Canvas();

canvas.Width = 144;

canvas.Height = 144;

btn.Content = canvas;

Rectangle rect = new Rectangle();

rect.Width = canvas.Width;

rect.Height = canvas.Height;

rect.RadiusX = 24;//设置为圆角的矩形

rect.RadiusY = 24;

rect.Fill = Brushes.Blue;

canvas.Children.Add(rect);

Canvas.SetLeft(rect, 0);

Canvas.SetRight(rect, 0);

Polygon polygon = new Polygon();

polygon.Fill = Brushes.Yellow;

polygon.Points = new PointCollection();

for (int i = 0; i < 5;i++ )

{

double angle = i * 4 * Math.PI / 5;

Point pt = new Point(48 * Math.Sin(angle),

-48 * Math.Cos(angle));

polygon.Points.Add(pt);

}

canvas.Children.Add(polygon);

Canvas.SetLeft(polygon, canvas.Width / 2);

Canvas.SetTop(polygon, canvas.Height / 2);

}

程序输出:

虽然我们可以使用Canvas来在窗口中摆控件,但是大多数时候是不推荐这么做的,Canvas一般用于显示图形,或者进行鼠标驱动的绘图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: