跟着小王学习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一般用于显示图形,或者进行鼠标驱动的绘图。
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一般用于显示图形,或者进行鼠标驱动的绘图。
相关文章推荐
- 跟着小王学习wpf系列之十一 依赖属性一
- 跟着小王学习wpf系列之十四 单个孩子的自定义element
- 跟着小王学习wpf系列二 基本的wpf程序架构
- 跟着小王学习wpf系列三 颜色和画刷
- 跟着小王学习wpf系列之十 练习之拼图游戏
- 跟着小王学习wpf之十二 Wpf中的鼠标事件详解
- WPF控件学习系列之五---CanvasPanel控件
- 跟着小王学wpf系列一 WPF窗口
- 跟着小王学wpf系列之四 内容
- 跟着小王学wpf系列之五 Button
- 跟着小王学wpf系列之 常用控件布局控件
- 跟着小王学习wpf之八 Grid
- 走进WPF系列学习之二 如何用WPF绘制与配置2D图形界面
- 走进WPF系列学习之三 如何应用WPF控制图形透明度与混色特效
- 【WPF学习笔记】之如何传递第一个登录界面的值到下一个页面显示:动画系列之(三)
- 【WPF学习笔记】之如何保存画面上新建的数据到数据库中并且删除画面上的数据和数据库的数据:动画系列之(五)
- wpf学习笔记---Canvas
- WPF学习系列011: 2.7.3 更多类型转换
- WPF学习系列023: 3.2.5 附加属性
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习