UWP学习笔记 27-30

27

Bob说,某些时候,我们还是需要用绝对位置的,比如,数学公式、乐谱计算等软件。因此,我们需要画板控件(Canvas)。

先从最简单的直线开始:

 <Line X1="10" X2="200" Y1="10" Y2="10" Stroke="Black" Fill="Black" StrokeThickness="5" StrokeEndLineCap="Triangle" />

X1,Y1是起点XY坐标;X2,Y2是重点XY坐标。Stroke是描边颜色,Fill是填充颜色,StrokeThickness是描边厚度,StrokeEndLineCap是结束的画笔类型,这里选三角形就是结尾有个小尖尖头。

(对了,直线直接可以在程序中使用)

Bob在之后演示了用直线画出三角形,这里不再赘述。

接下来是折线:

  <Polyline Canvas.Left="150"
Canvas.Top="0"
Stroke="Black"
StrokeThickness="5"
Fill="Red"
Points="50,25 0,100 100,100 50,25" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round" />

▲Points,就是折线经过的四个点。

最后要提到的是Z轴的问题。虽然显示器是2D的,但不妨想象一下,用投影画出的样子。对,这就产生了Z轴。Zindex就是这样的一类属性。比如——

 <Rectangle Canvas.Top="200" Canvas.Left="0" Height="50" Width="100" Fill="Yellow" Canvas.ZIndex="100" />
<Ellipse Stroke="Blue" Width="50" Height="100" Canvas.Left="10" Canvas.Top="200" StrokeThickness="10" Canvas.ZIndex="15" />

这样显示出来,就是一个正方形盖住“0”的上部的图案。

28

先设想一种情况,你在开发一个庞大的项目,要用到一堆相似的主题。这时,在现有的知识水平下,你只能一个一个的复制——粘贴、复制——粘贴,万一哪个地方出了错,还要重新来过。

这里,为了解决这种问题,我们就要引入新的语法了——Resources

先在页面(Page)里面实现一下:

<Page.Resources>

<SolidColorBrush x:Key="Mybrush" Color="Brown"></SolidColorBrush>
<x:String x:Key="hello">我是用我自己的方式守护我心爱的网站!</x:String>

</Page.Resources>

要使用的话,就这么操作:

TextBlock Foreground="{StaticResource Brush}" Text="{StaticResource hello}"></TextBlock>

可以看见,所谓Key就是名字、而要使用的话,就加上这个名字、以及大括号就可以了。

问题来了,如果是Button呢?

我们有一个“豪华版”:

<Style TargetType="Button" x:Key="BU_st">
<Setter Property="FontFamily" Value="微软雅黑"></Setter>
<Setter Property="FontSize" Value="36"></Setter>
<Setter Property="Background" Value="AliceBlue"></Setter>
</Style>

如果要跨Page使用该怎么办呢?

这也有办法:

在App.xaml中添加:

<Application.Resources>
<SolidColorBrush x:Key="Mybrush" Color="Brown"></SolidColorBrush>
<x:String x:Key="hello">我是用我自己的方式守护我心爱的网站!</x:String>

</Application.Resources>

其他使用的方法不变。

那么,如果要在应用外使用呢?我们可以使用(或者加载)资源字典(Resource Dictionary),然后在Page.Resources中创建集合:

<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
<ResourceDictionary Source="Dictionary2.xaml"></ResourceDictionary>

<!--这是在不只一个的时候使用的语句-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

29

前面讲的StaticResource是静态的,只在程序运行初次被绑定,这里,我们如果要获取用户设置的主题色的话,就要用另外一种方法了:

{ThemeResource SystemAccentColor}

也就是说,要设置颜色,就在Fill=""中,把他填上去就可以了。

像这样:

<Rectangle Height="100" Width="50" Fill="{ThemeResource SystemAccentColor}"></Rectangle>

<Rectangle Height="50" Width="50" Fill="{ThemeResource SystemColorWindowColor}"></Rectangle>

<TextBlock Text="标题" Style="{StaticResource HeaderTextBlockStyle}"></TextBlock>

<!--这里是字体-->

还有一点,我们可以自己设置亮色/暗色主题,不受用户设置的干扰:

在App.xaml加入以下属性:

RequestedTheme="Light"

还有啊,无论怎样,高对比度的设置永远是最高优先级的,要为残疾人士考虑嘛。

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据