1.在中可扩展应用程序标记语言(XAML),样式和模板属性在技术上可以通过以下两种方式之一进行设置。您可以使用特性语法(属性语法)来引用资源中定义的样式,例如对象 Style或者,可以使用属性元素语法来 定义内联样式,例如: 特性用法更常见。 在资源中以内联方式定义且未在资源中定义的样式必须仅限于包含元素,因为它没有资源键,所以不能轻易地重新使用。 通常,资源定义的样式更通用并且有用,更多的是将 Windows (WPF) 程序逻辑与代码中的程序逻辑分离在标记中的常规编程模型原则。 通常,即使只是要在该位置使用该样式或模板,也没有理由设置样式或模板。 大多数可 以采用样式或模板的元素也支持 content 属性和内容模型。 如果只使用通过样式设置或 模板化一次创建的任何逻辑树,只需在直接标记中使用等效的子元素填充该内容属性即可。 这会完全跳过样式和模板机制。 对于样式和模板,也可以通过返回对象的标记扩展启用其他语法。 可能的两种扩展插件,直线是最简单的图形。使用X1、Y1两个属性可以设置它的起点坐标,X2、Y2两个属 性则用来设置其终点坐标。控制起点/终点坐标就可以实现平行、交错等效果。 Stroke(笔触)属性的数据类型是Brush(画刷),凡是Brush的派生类均可用于给这个属性 赋值。因为WPF提供了多种渐变色画刷,所以画直线也可以画出渐变效果。同时,Line 的一些属性还帮助我们画出虚线以及控制线段终点的形状。
2.矩形由笔触(Stroke,即边线)和填充(Fill)构成。Stroke属性的设置与Line一样,Fill属性的数据类型是Brush。Brush是个抽象类,所以我们不可能拿一个Brush类的实 例为Fill属性赋值而只能用Brush派生类的实例进行赋值。WPF的绘图系统包含非常丰富 的Brush类型,常用的有: SolidColorBrush:实心画刷。在XAML中可以使用颜色名称字符串(如Red、Blue) 直接赋值。LinearGradientBrush:线性渐变画刷。色彩沿设定的直线方向、按设定的变化点进 行渐变。RadialGradientBrush:径向渐变画刷。色彩沿半径的方向、按设定的变化点进行渐 变,形成圆形填充。 ImageBrush:使用图片(Image)作为填充内容。VisualBrush:WPF中的每个控件都是由FrameworkElement类派生来的,而 FrameworkElement又是由Visual类的方法获得。获得这个可视化的形象后,我们可 以用这个形象进行填充,这就是VisualBrush。比如当我想把窗体上的某个控件拖拽到另一个位置,当鼠标松开之前需要在鼠标指针下显示一个控件的“幻影”,这个“幻 影”就是用VisualBrush填充出来的一个矩形,并让矩形捕捉鼠标的位置、随鼠标移动椭圆也是一种常见的几何图形,它的使用方法与矩形没有什么区别。下面的例子是绘制一个球体,球体的轮廓是正圆(Circle),Width与Height相等的椭圆即是正圆;球体的 光影效果使用径向渐变实现路径(Path)可以说是WPF绘图中最强大的工具,一来是因为它完全可以替代其他 几种图形,二来它可以将直线、圆弧、贝斯二曲线等基本元素结合进来,形成更复杂的图形。路径最重要的一个属性是Data,Data的数据类型是Geometry(几何图形),我们正是使用这个属性将一些基本的线段拼接起来、形成复杂的图形。 为Data属性赋值的语法有两种:一种是标签式的标准语法,另一种是专门用户绘制几何图形的“路径标记语法”。
本节我们借助标准语法认识各种基本线段,和学习绘制几何图 形的路径标记语法。想要使用Path绘制图形,首先要知道几何图形数据是如何组合在Data属性中的。Path 的Data属性是Geometry类,但Geometry类是个抽象类,所以我们不可能在XAML中直接 使用标签Point属性用来指明圆弧连接的终点; 圆弧截取自椭圆,Size属性即是完整椭圆的横轴半径和纵轴半径; SweepDirection属性指明圆弧是顺时针方向还是逆时针方向; 如果椭圆上的两点位置不对称,那么这两点的圆弧就会分为大弧和小弧,IsLargeArc 属性用于指明是否使用大弧去连接; RotationAngle属性用来指明圆弧母椭圆的旋转角度,Path是如此之强大,可以让我们随心所欲地绘制图形,然而它的一大缺点也是不容忽 视的,那就是其标签式语法的烦琐。一般情况下,复杂图形(Path)都是由数十条线段 连接而成,按照标签式语法,每条线段(Segment)是一个标签、每个标签占据一行,一个图形就要占去几十行代码。而这仅仅是一个图形,要组成一个完整的图画往往需要 十多个图形组合在一起,有可能占据数百行代码。
2.矩形由笔触(Stroke,即边线)和填充(Fill)构成。Stroke属性的设置与Line一样,Fill属性的数据类型是Brush。Brush是个抽象类,所以我们不可能拿一个Brush类的实 例为Fill属性赋值而只能用Brush派生类的实例进行赋值。WPF的绘图系统包含非常丰富 的Brush类型,常用的有: SolidColorBrush:实心画刷。在XAML中可以使用颜色名称字符串(如Red、Blue) 直接赋值。LinearGradientBrush:线性渐变画刷。色彩沿设定的直线方向、按设定的变化点进 行渐变。RadialGradientBrush:径向渐变画刷。色彩沿半径的方向、按设定的变化点进行渐 变,形成圆形填充。 ImageBrush:使用图片(Image)作为填充内容。VisualBrush:WPF中的每个控件都是由FrameworkElement类派生来的,而 FrameworkElement又是由Visual类的方法获得。获得这个可视化的形象后,我们可 以用这个形象进行填充,这就是VisualBrush。比如当我想把窗体上的某个控件拖拽到另一个位置,当鼠标松开之前需要在鼠标指针下显示一个控件的“幻影”,这个“幻 影”就是用VisualBrush填充出来的一个矩形,并让矩形捕捉鼠标的位置、随鼠标移动椭圆也是一种常见的几何图形,它的使用方法与矩形没有什么区别。下面的例子是绘制一个球体,球体的轮廓是正圆(Circle),Width与Height相等的椭圆即是正圆;球体的 光影效果使用径向渐变实现路径(Path)可以说是WPF绘图中最强大的工具,一来是因为它完全可以替代其他 几种图形,二来它可以将直线、圆弧、贝斯二曲线等基本元素结合进来,形成更复杂的图形。路径最重要的一个属性是Data,Data的数据类型是Geometry(几何图形),我们正是使用这个属性将一些基本的线段拼接起来、形成复杂的图形。 为Data属性赋值的语法有两种:一种是标签式的标准语法,另一种是专门用户绘制几何图形的“路径标记语法”。
本节我们借助标准语法认识各种基本线段,和学习绘制几何图 形的路径标记语法。想要使用Path绘制图形,首先要知道几何图形数据是如何组合在Data属性中的。Path 的Data属性是Geometry类,但Geometry类是个抽象类,所以我们不可能在XAML中直接 使用标签Point属性用来指明圆弧连接的终点; 圆弧截取自椭圆,Size属性即是完整椭圆的横轴半径和纵轴半径; SweepDirection属性指明圆弧是顺时针方向还是逆时针方向; 如果椭圆上的两点位置不对称,那么这两点的圆弧就会分为大弧和小弧,IsLargeArc 属性用于指明是否使用大弧去连接; RotationAngle属性用来指明圆弧母椭圆的旋转角度,Path是如此之强大,可以让我们随心所欲地绘制图形,然而它的一大缺点也是不容忽 视的,那就是其标签式语法的烦琐。一般情况下,复杂图形(Path)都是由数十条线段 连接而成,按照标签式语法,每条线段(Segment)是一个标签、每个标签占据一行,一个图形就要占去几十行代码。而这仅仅是一个图形,要组成一个完整的图画往往需要 十多个图形组合在一起,有可能占据数百行代码。