相信经历过Windows Insider的人对下面这个图都不会陌生,偶然看见邹欣老师领导的微软团队写了篇用xaml绘制这个静态页面,那咱也来亲手实验一番。唔。。。请做和放宽!
首先我们来看看xaml代码。
1 <Grid Background="Black"> 2 <Grid> 3 <TextBlock Margin="35" FontSize="20" Foreground="White" HorizontalAlignment="Center" FontFamily="Microsoft YaHei">请坐和放宽</TextBlock> 4 <Grid Height="200" Width="200" > 5 <Ellipse Stroke="Gray" StrokeThickness="3"></Ellipse> 6 <Ellipse Stroke="DeepSkyBlue" StrokeThickness="3" 7 StrokeDashArray="61.89, 1000" 8 RenderTransformOrigin="0.5, 0.5"> 9 <Ellipse.RenderTransform> 10 <RotateTransform Angle="-90" /> 11 </Ellipse.RenderTransform> 12 </Ellipse> 13 <TextBlock FontSize="50" FontFamily="Microsoft YaHei" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White">30%</TextBlock> 14 </Grid> 15 </Grid> 16 </Grid>
Shape.StrokeDashArray属性
Windows.UI.Xaml.Shapes.Shape基类,以及继承自它的Ellipse、Line、Path、Rectangle等类,都具有一些Stroke****之名的属性,可以实现描边效果。其中有一个比较特别的StrokeDashArray属性,它能实现虚线型的描边效果,加以扩展的话是我们实现重复性UI绘制的好帮手。
在XAML中,这一属性表现为形如”1,2,3,4”的字符串格式,而本质上它是一个DoubleCollection。其中的数值两两配对,依次表示虚线的短划线和空白间隔的长度,并且能周期性地出现。如果数值个数只有奇数个,那么匹配不满的那一组中,空白间隔的长度将和短划线的长度一致。
首先,将Grid的背景设置为黑色。然后画出两个圆形,一个圆形设置为灰色,StrokeThickness属性设置为3,将第二个圆设置为蓝色,StrokeThickness属性设置为3,此时圆形被蓝色填满,这是"进度100%"的效果。那么写这么一句StrokeDashArray="61.89, 1000"。此时我们可以看到一个坐和放宽就绘制出来了,是不是很简单。