画刷

画刷(Brush)用于为图形元素填充颜色。在XAML中,画刷有许多属性,其中较常使用的是Fill属性和Stroke属性,Fill用于填充图形的背景色,而Stroke用于设置图形的线条颜色。

在实际应用中,可以采用不同的填充方式填充背景色或设置线条颜色,以达到不同的视觉效果。这里我们简单介绍一下纯色画刷(SolidColorBrush)和线性渐变画刷(LinearGradientBrush),有关画刷的详细内容和图形绘制在后面章节中会单独介绍。

(1)纯色画刷

纯色画刷(SolidColorBrush)是画刷中最基本的填充方式,用来给元素填充某种单一纯色。在XAML语法中,SolidColorBrush元素的定义格式如下所示:

<SolidColorBrush Color="ColorName"/>

-or-

<SolidColorBrush Color="#RGB"/>

-or-

<SolidColorBrush Color="#RRGGBB"/>

其中,ColorName指的是颜色名称;RGB表示长度为3个字符的十六进制值,第一个字符指定颜色的R值,第二个字符指定G值,第三个字符指定B值,如#00F;RRGGBB表示长度为6个字符的十六进制值,用前两个字符指定颜色的R值,中间两个字符指定G值,最后两个字符指定B值,如#0000FF。

例如,在向一个页面中添加一个矩形时,在Rectangle.Fill属性元素中定义SolidColorBrush元素并通过Color属性设置矩形的填充色为红色,相应的XAML代码片段如下所示:

<Rectangle>

<Rectangle.Fill>

<SolidColorBrush Color="Red"/>

</Rectangle.Fill>

</Rectangle>

-或-

<Rectangle>

<Rectangle.Fill>

<SolidColorBrush Color="#F00"/>

</Rectangle.Fill>

</Rectangle>

-或-

<Rectangle>

<Rectangle.Fill>

<SolidColorBrush Color="#FF0000"/>

</Rectangle.Fill>

</Rectangle>

(2)线性渐变画刷

线性渐变就是沿着一条直线定义不同颜色之间的渐变,该直线的起点和终点分别由画刷的StartPoint属性和EndPoint属性设置。之后,线性渐变画刷就沿着这条直线来对图形元素填充颜色,展现颜色渐变的效果。

在XAML语法中,LinearGradientBrush元素的定义格式如下所示:

<LinearGradientBrush StartPoint="X,Y" EndPoint="X,Y">

<!--define GradientStops-->

<GradientStop Color="ColorValue" Offset="OffsetValue"/>

……

</LinearGradientBrush>

其中,StartPoint属性用于设置渐变线的起始点坐标,EndPoint属性用于设置终点坐标;X是二维坐标轴中的横坐标值,Y是纵坐标值;GradientStop是渐变画刷的渐变点对象,Color属性用于设置渐变点的颜色,Offset属性用于设置渐变点的开始位置,是一个数值类型。

在默认情况下,线性渐变是沿主对角线方向进行的,起点是被绘制区域的左上角点,终点是被绘制区域的右下角点。

3.3.4 动画

快速而流畅的动画能够为应用程序注入活力,在Windows 8中可以发现,动画已与用户体验完美融合,成为用户体验中不可或缺的一部分。例如,对于开始屏中的项目,当把鼠标放到某个应用程序的图标上时,相应的图标会凸显;当鼠标离开时,应用程序的图标又会还原成原状。当启动开始屏中的某个项目时,也会产生翻转的动画效果。因此,合理的使用动画效果能够让用户更直观地了解某一特定操作的结果,这种视觉反馈将使用户对应用程序的响应程度充满信心。

在XAML中,StoryBoard(演示图板)是动画的核心内容,通过StoryBoard可以定义各种动画效果,如插值动画、关键帧动画等。使用StoryBoard定义动画的语法格式如下所示:

<Storyboard ...>

<AnimationTypeName Storyboard.TargetName="objectName" Storyboard.TargetProperty="PropertyName" ...>

</AnimationTypeName>

</Storyboard>

其中,AnimationTypeName表示动画类型,如插值动画中的DoubleAnimation和ColorAnimation,DoubleAnimation动画可以作用于界面元素的Double类型的属性,而ColorAnimation动画可以作用于元素的Color类型的属性。无论是定义哪种类型的动画,都需要通过Storyboard的TargetName属性指定要使用动画的元素,通过TargetProperty属性设置在元素的哪个属性上使用动画,除了这两个属性之外,针对不同类型的动画还需要设置其他的属性。

有关各种动画类型的详细内容,将在第10章具体介绍,在此就不多细讲了。

Win10系列:UWP界面布局基础12的更多相关文章

  1. Win10系列:UWP界面布局基础1

    随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...

  2. Win10系列:UWP界面布局基础8

    路由事件 XAML不仅继承了传统的事件处理方式,还引入了一个增强型事件处理机制:路由事件(RoutedEvent).路由事件和传统事件的不同是:路由事件允许一个对象触发事件后,可以同时拥有多个事件接收 ...

  3. Win10系列:UWP界面布局基础7

    2.附加属性 有一些XAML元素,其自身的属性大多是在其它的元素中声明和使用的,该元素本身却很少使用,这些在其他元素中声明和使用的属性被称为附加属性(Attached Properties).附加属性 ...

  4. Win10系列:UWP界面布局基础4

    类型转换 前面讲到过,在定义元素时可以通过Attributes特性方式为其设置属性并为属性赋值,在实际开发中所赋予的值可能和属性本身的数据类型不相符,这时XAML解析器就会使用类型转换器(Type C ...

  5. Win10系列:UWP界面布局基础2

    属性设置 在面向对象程序开发中,所提及的属性通常指的是对象的属性.在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性.宽度属性和高度属性等.为了满足实际应用的需 ...

  6. Win10系列:UWP界面布局基础11

    样式继承 为了使样式便于维护及重复使用,可以在一个样式上引用其他的样式,这就是样式继承.样式继承的方法是:在Style元素的BasedOn属性上使用StaticResource标记扩展来引用被继承的样 ...

  7. Win10系列:UWP界面布局基础5

    (2)编写后台代码访问资源 下面通过一个例子来演示如何编写后台代码引用资源.新建一个Windows应用商店的空白应用程序项目,将其命名为AccessResourceApplication,打开项目下的 ...

  8. Win10系列:UWP界面布局基础3

    在实际项目开发中,为控件属性赋值时经常会遇到属性值在设计时处于未知状态,而只有在应用程序运行时才能获取到.这种情况下,直接赋值方法是无法满足的,可以使用XAML标记扩展(Markup Extensio ...

  9. Win10系列:UWP界面布局基础9

    在XAML中,样式.模板.画笔和动画等都被看做是资源,它们最终的作用都是相同的,就是让设计人员可以使用这些资源创建更好的视觉效果,对其设计的产品外观进行标准化统一,那么如何使用这些资源并组织和重用呢, ...

随机推荐

  1. 项目上有红色感叹号, 一般就是依赖包有问题, remove依赖,重新加载,maven的也行可认删除,自己也会得新加载

    项目上的红色叹号, 要下面提示: "Problems"  里的errors  , 看是什么错误,  一般是由于网络等原因,  依赖没有下载完整,  只有文件名字对了,  内容不全, ...

  2. python静态方法、类方法

    常规: class Dog(object): def __init__(self,name): self.name=name def eat(self): print('%s is eating'%s ...

  3. Linux中命令行终端切换工具screen

    screen命令 本文转自:http://man.linuxde.net/screen Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令 ...

  4. 关于ascii码的一些内容

    1.通过C#程序输出tab(制表符)内容. 1.1常用方式我们可以是 //测试输出\t到文件 File.WriteAllText("test.txt", "a\tb\tc ...

  5. Mysql数据库如何自动备份

    Mysql数据库如何自动备份 一.总结 一句话总结:用navicat配合windows的批处理即可 navicat windows批处理 二.Mysql数据库自动备份 参考:Mysql数据库自动备份 ...

  6. LeetCode--414--第三大的数

    问题描述: 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1 ...

  7. [LintCode] Binary Tree Level Order Traversal(二叉树的层次遍历)

    描述 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历结果: [ [3] ...

  8. 架构探险笔记6-ThreadLocal简介

    什么是ThreadLocal? ThreadLocal直译为“线程本地”或“本地线程”,如果真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,应该叫ThreadLocalVariab ...

  9. SVN的安装

    Svn服务器的安装和配置 注意,一定要切换到最高管理权限:  su root  通过这个命令就可以完成! 1.安装svn服务器端软件从镜像服务器或者YUM源下载安装SVN服务器软件:yum insta ...

  10. 5月21 汽车查询及批量删除----php方法

    ---恢复内容开始--- 这个与之前不同是在php中实现了页面的查询,引用AJAX实现批量删除及弹窗的显示 作业要求: 页面显示数据代码: <!DOCTYPE html PUBLIC " ...