[ay的wpf]写给自己的wpf高级教程 [24]-Viewport与Viewbox

2016-09-05 10:38:00来源:作者:AaronYang技术分享人点击

====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。=========

在html5中,有一行代码

<meta name="viewport" content="width=device-width,user-scalable=no" />

这里的viewport的意思是当前整个html窗口,也就是dom。

在wpf中,在绘图知识点中有2个东西

Viewport和Viewbox

我们假设2个元素 ,这里AY就懒一点了,从网上了找了个demo,讲一下,争取简单理解

窗口A 画刷B

基本工作: 圆几何,需要一个中心点坐标,然后长轴长度,短轴长度。

矩形几何,这里一个rect,代表左上角坐标(X,Y 然后width和height,就是(x,y,width,height)的rect类型,然后圆角值,这里是5,5

public Window1() { InitializeComponent(); //background EllipseGeometry ellipse = new EllipseGeometry(new Point(50, 50), 50, 20); RectangleGeometry rect = new RectangleGeometry(new Rect(50, 50, 50, 20), 5, 5); PathGeometry combin = Geometry.Combine(ellipse, rect, GeometryCombineMode.Xor, null); GeometryDrawing drawing = new GeometryDrawing(Brushes.LightBlue, new Pen(Brushes.Green, 2), combin); DrawingBrush background = new DrawingBrush(drawing); this.Background = background; }

现在有个空白窗口A,当然窗口A是随便的,知也可以是其他具有画刷属性的元素。

如果我们用Viewport,就是让画刷相对于 窗口A怎么绘制,怎么平铺

background.Viewport = new Rect(0, 0, 0.15, 0.15);

background.TileMode = TileMode.Tile;

这里画刷从0,0坐标,然后0.15百分比每份图形的宽度,和0.15百分比每份图形的高度,Tile开始平铺,所以结果如下

ViewBox的话,相对于画刷B来说的,不想对于窗口A

public Window1() { InitializeComponent(); //background EllipseGeometry ellipse = new EllipseGeometry(new Point(50, 50), 50, 20); RectangleGeometry rect = new RectangleGeometry(new Rect(50, 50, 50, 20), 5, 5); PathGeometry combin = Geometry.Combine(ellipse, rect, GeometryCombineMode.Xor, null); GeometryDrawing drawing = new GeometryDrawing(Brushes.LightBlue, new Pen(Brushes.Green, 2), combin); DrawingBrush background = new DrawingBrush(drawing); background.Viewbox = new Rect(0.5, 0.5, 0.5, 0.5); this.Background = background; }

====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。=========

推荐您阅读更多有关于“wpf4.5,”的文章

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台