设为首页 收藏本站
查看: 740|回复: 0

Windows 8 应用商店应用开发 之 画刷

[复制链接]

尚未签到

发表于 2015-5-23 07:51:47 | 显示全部楼层 |阅读模式
8.5画刷
画刷用来对图形、文本和控件的内部或轮廓进行上色,经过上色可以让控件在界面中可见并能增加美观性。这一节重点介绍单色画刷(SolidColorBrush)、线性渐变色画刷(LinearGradientBrush)和图像画刷(ImageBrush)的使用方法。
8.5.1 单色画刷
单色画刷使用单一的颜色来绘制图形,它有两种构造方法,一种没有传入参数,另一种传入一个Color类的属性以便在初始化SolidColorBrush类型的对象时指定颜色。单色画刷是最基本的画刷。在XAML代码中可以通过三种方法来定义SolidColorBrush及其使用的颜色,下面将逐一介绍这三种方法。
(1)预定义颜色名称
Windows应用商店应用中共有256种已命名的预定义颜色。在开发程序的过程中,只需使用Fill属性就可以填充自己喜欢的颜色。下面的示例使用预定义颜色名称定义椭圆形的填充色为黄色。


单色画刷的效果图如图8-23所示。
DSC0000.png

图8-23 预定义颜色名称的椭圆

(2)十六进制颜色值
此方法使用一个十六进制格式字符串声明32位颜色值,每8位形成一个组成部分,其中前8位表示画刷的透明度,这个十六进制字符串各个组成部分的值依次为:alpha 通道(透明度)、红色通道、绿色通道、蓝色通道。两个从0到F的字符定义每个8位组成部分的十六进制表示值,从0到F颜色的亮度逐渐增加,比如“#FFFF0000”,其透明度和红色部分的值都是“FF”,因此这个十六进制字符串表示完全不透明的红色。
下面是使用十六进制颜色值的示例,运行效果与图8-23相同。


(3)属性元素语法
这种方法能指定元素的Opacity属性值,Opacity是从0到1的 Double类型的值,默认为1,代表完全不透明,0则代表完全透明,从1到0透明度逐渐加强。下面的示例通过定义SolidColorBrush元素创建单色画刷并添加到矩形的Fill属性中。运行效果与图8-23相同。


     
         
     

8.5.2 线性渐变画刷
顾名思义,线性渐变画刷是用来绘制渐变色的。在某个区域内,颜色会沿着一条线渐渐的变化,这条线叫做渐变轴,线性渐变画刷的原理是沿着渐变轴绘制渐变色。
线性渐变画刷使用GradientStop(渐变停点)来指定沿着渐变轴渐变的颜色和位置。GradientStop的Offset属性指定渐变停点在渐变轴上的位置,Offset是从0到1的Double类型的值,Offset接近0表示渐变停点会靠近LinearGradientBrush的StartPoint位置,接近1则表示渐变停点会靠近EndPoint处,线性渐变画刷的StartPoint和EndPoint属性用来指定渐变轴的方向。使用GradientStop的Color属性可以指定渐变停点的颜色。下面通过示例展示如何使用线性渐变画刷。
在一个打开的Windows应用商店项目中新建一个空白页,并命名为LinearBrushPage,双击打开此页面的LinearBrushPage.xaml文件,在Grid元素中添加如下代码。


   
        
            
            
            
            
        
   

上面的代码设置了LinearGradientBrush的StartPoint属性值为(0,0)、EndPoint属性值为(0.5,1),可以实现沿着对角线的渐变效果。接着为LinearGradientBrush控件设置4个渐变停点,并对每个渐变停点指定不同的Color和Offset属性值,从而创建了一个线性渐变画刷,最后将定义的画刷添加到Rectangle控件的Fill属性中,这样既可实现渐变效果。
运行此页面,线性渐变画刷的效果如图8-24所示。

颜色:蓝色
起始点:0.0

颜色:红色
起始点:0.45

颜色:黄色
起始点:0.70

颜色:绿色
起始点:1.0

渐变轴

DSC0001.png
图 8-24利用线性渐变色画刷绘制的矩形

下面介绍使用后台代码实现如图8-24所示的渐变效果。具体实现代码如下所示:

public LinearBrushPage()
{
    this.InitializeComponent();
    //创建画刷对象
    LinearGradientBrush linearBrush = new LinearGradientBrush();
    //通过为起点与终点赋值来确定渐变的方向
    linearBrush.StartPoint = new Point(0, 0);
    linearBrush.EndPoint = new Point(0.5, 1);
    //第一个渐变停点
    GradientStop gs = new GradientStop();
    gs.Color = Colors.Blue;
    gs.Offset = 0;
    //第二个渐变停点
    GradientStop gs1 = new GradientStop();
    gs1.Color = Colors.Red;
    gs1.Offset = 0.45;
    //第三个渐变停点
    GradientStop gs2 = new GradientStop();
    gs2.Color = Colors.Yellow;
    gs2.Offset = 0.7;
    //第四个渐变停点
    GradientStop gs3 = new GradientStop();
    gs3.Color = Colors.Green;
    gs3.Offset = 1;
    //将渐变停点添加到GradientStops属性中
    linearBrush.GradientStops.Add(gs);
    linearBrush.GradientStops.Add(gs1);
    linearBrush.GradientStops.Add(gs2);
    linearBrush.GradientStops.Add(gs3);
    //实例化矩形的对象  
    Rectangle rect = new Rectangle();   
    rect.Height = 300;
    rect.Width = 400;
    rect.Fill = linearBrush;
//将矩形添加到前台
    MyShow.Children.Add(rect);

上面的代码首先实例化LinearGradientBrush类型的对象linearBrush,通过设置linearBrush对象的StartPoint和EndPoint属性来确定渐变方向为对角线方向。接着创建四个GradientStop类型的对象,并设置这四个对象的Offset和Color属性值。利用linearBrush对象的GradientStop.Add()方法将设置好的四个GradientStop类型的对象添加到linearBrush变量中,这样便把渐变停点添加到了渐变画刷中。然后创建Rectangle类型的对象rect,并设置Height和Width属性值为300、400,最后将linearBrush对象赋值给rect的Fill属性,这样便用后台代码实现了渐变效果。
在使用线性渐变画刷时,设置LinearGradientBrush元素的StartPoint和EndPoint属性不同的值,会产生不同的渐变效果。上面的示例指定LinearGradientBrush的StartPoint属性值为(0,0)、EndPoint属性值为(0.5,1),实现了沿着对角线的渐变效果。若要获得一个竖直方向的渐变效果,只需要设置上面示例中StartPoint属性值为(0,0)、EndPoint为(0,1),关键是要保证两个坐标点中X轴的值相同,这样就会产生竖直方向的渐变效果。

  注:本文选自机械工业出版社3月出品的《Windows 8 应用开发权威指南》

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-69676-1-1.html 上篇帖子: Windows 8实用窍门系列:18.windows 8开发模拟器和windows 8程序中关联文件类型 下篇帖子: Windows 8 地理位置定位 1.快速上手
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表