原文:Windows Phone开发(31):画刷

画刷是啥玩意儿?哈,其实画刷是用来涂鸦,真的,没骗你,至于你信不信,反正我信了。

本文通过价绍几个典型的画刷,使你明白画刷就是用来涂鸦的。

一、纯色画刷SolidColorBrush。

这个家伙比较“纯”,当然它不是装纯,的确很纯,纯到只用一种颜色,所以叫“单色画刷”。

来,看看这个示例,我们画一个矩形(放在一个Canvas中),然后用这个纯家伙来打扮一下。

        <Rectangle Canvas.Left="5" Canvas.Top="130" Width="85" Height="75">
<Rectangle.Fill>
<SolidColorBrush Color="White"/>
</Rectangle.Fill>
</Rectangle>

因为内置有转换器,微软一向是关心开发者的身体健康的,所以,MS不舍得我们写代码的时候过多劳累,所以,上面的内容可以简写为。

        <Rectangle Canvas.Left="110" Canvas.Top="156"
Width="120" Height="120" Fill="Blue"/>

这两段代码实现的效果是一样的,很明显,你会更喜欢后者,因为它简练了N多。

接下来我们看看Color属性有哪些表示方法。

1、名字,比如Blue,不用我翻译了,明白了;

2、RGB,如#CCCCCC,如果你干过网页设计,写过CSS样式,你懂的;

3、ARGB,如#0CBBBBBB,其实就是在前面加一个A值,0-1之间,透明度。

可以说,你记住了以上三点,你就可以写出数不尽的颜色。

二、渐变画刷。

如果你玩过像Photoshop这些绘图软件,或者你做过GDI编程,当然你玩过WPF更好,简直一模一样。

渐变颜色,我们可以通俗地理解为:由N多种颜色组成,这些颜色有各自的分布主式,并且,在各段颜色之间都有一个过渡。

下面看看两种渐变形式:线性和径向。

(一)线性渐变

先看看下面的图,相信没有什么文字可以比图片更直观,相信你一看就知道何为线性渐变,只可意会啊。

好,上面的效果是如何实现的呢?用到这个类LinearGradientBrush。看一看XAML代码。

        <Rectangle Canvas.Top="312" Canvas.Left="40" Width="278" Height="95">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Yellow" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Orange" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>

其中,我们要关注几个地方:

1、StartPoint,线性渐变的起始点,既然是线性了,肯定有始有终的了,X和Y都在0和1之间;

2、EndPoint,结束点,同样,值范围在0-1之间,包含0和1.

3、0,0点在左上角,1,1点在右下角。

每个LinearGradientBrush都可以包含N个GradientStop,表示每种颜色的终点位置,如下图所示。

如果你还不是很理解,最好的法子就是多练习。

        <Ellipse Canvas.Top="465" Canvas.Left="40" Width="150" Height="120">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FF8E8EE8" />
<GradientStop Color="#FFDBBC55" Offset="0.6" />
<GradientStop Color="#FF61DDF5" Offset="0.99" />
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>

以上两个例子的运行效果如下图所示。

(二)径向渐变

名字不好理解,还是看图写作文吧。



怎么样,美吗?看看实现的XAML代码吧。

        <Rectangle Canvas.Left="242" Canvas.Top="465" Width="150" Height="150">
<Rectangle.Fill>
<RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="Green" Offset="0.2"/>
<GradientStop Color="LightBlue" Offset="0.7"/>
<GradientStop Color="Yellow" Offset="1"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>

看看,有几个属性比刺眼。

1、Center,中心点,你看到了,径向渐变很像一个圆,有中心点,有半径,同样,取值范围是[0,1]。

2、RadiusX和RadiusY,同理,范围在[0,1],横轴和纵轴上的半径。

可以发现这些值都是相对的逻辑值,这样使用比绝对位置更灵活。

三、视频画刷VideoBrush。

这个要配合MediaElement一起使用,在前面的文章中已经介绍过。

四、图象画刷ImageBrush。

如果你觉得前面的都是用颜色的,不够爽,不妨看看这个,用图片来填充。

实现的XAML如下。

        <Ellipse Canvas.Left="40" Canvas.Top="445" Width="398" Height="248">
<Ellipse.Fill>
<ImageBrush ImageSource="test.jpg"/>
</Ellipse.Fill>
</Ellipse>

这个就简单了,ImageSource属性就是指向一张图片,使用方法与Image控件类似。

Windows Phone开发(31):画刷的更多相关文章

  1. wpf 画刷的分类

    System.Windows.Media.Brush最上一层画刷 System.Windows.Media.GradientBrush  线性画刷 ,下层主要有两种画刷 System.Windows. ...

  2. 学习windows编程 day4 之 设置画刷

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  3. Windows Phone开发人员必看资料

    win phone开发必看资料,下载地址收藏啦!收藏后可有选择性的下载,希望大家喜欢! 完整附件下载:http://down.51cto.com/data/414417 附件预览: Windows E ...

  4. Windows Phone开发(37):动画之ColorAnimation

    原文:Windows Phone开发(37):动画之ColorAnimation 上一节中我们讨论了用double值进行动画处理,我们知道动画是有很多种的,今天,我向大家继续介绍一个动画类--Colo ...

  5. Windows Phone开发(29):隔离存储C

    原文:Windows Phone开发(29):隔离存储C 本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不 ...

  6. Windows Phone开发(30):图形

    原文:Windows Phone开发(30):图形 图形如矩形.椭圆.路径等都从Shape类派生,它们一般表示规则或不规则图形,这些图形都是简单的二维图形,我相信大家都能理解的. 例一:矩形. 请看下 ...

  7. Windows Phone开发(20):当MediaElement和VideoBrush合作的时候

    原文:Windows Phone开发(20):当MediaElement和VideoBrush合作的时候 前面说的那么多控件都是"静态"的,都是"哑吧"的,今天 ...

  8. WPF 10天修炼 第八天 - 形状、画刷和变换

    图形 在WPF中使用绘图最简单的就是使用Shape类.Shape类继承自FrameworkElement,是一个专门用来绘图的类.Shape类中年派生的类有直线.矩形.多边形和圆形等. System. ...

  9. MFC Windows程序开发究竟是什么?

    MFC Windows程序开发究竟是什么? MFC是一个Application Framework.他是一个完整的程序模型. 什么是MFC?MFC是微软公司出品一个Application Framew ...

随机推荐

  1. 大约sources.list和apt-get [转载]

    个人觉得,Debian这与最大的方便apt-get安装软件,apt-get这可能是工作:/etc/apt/sources.list文件中保存着一些server的设置,在这些server上有大量的能够用 ...

  2. Excel设置下拉选项的方法

    前些日子参加提高班组织的数据采集工作,到各个二级学院搜集数据,当然离不开我们常用的Excel表格了.在这次采集数据的过程过程中还真学到了一两招.就比如在Excel中设置下拉选项的方法. 例如我们要在A ...

  3. jasperreport报表生成时编译的错误

    在帮徐老板解决一个jasperreport报表生成时编译的错误: 刚开始时,加上他所给的 jar 包之后,错误显示为: net.sf.jasperreports.engine.JRException: ...

  4. Android显示GIF图片

    今天我们研究一下怎样在Android手机上显示GIF动态图片 首先须要在src文件夹下新建一个自己定义的View.代码例如以下: </pre><pre name="code ...

  5. java 显示目录下全部文件

    package gao.org; import java.awt.HeadlessException; import java.io.File; import javax.swing.JFileCho ...

  6. 步步为营Hibernate全攻略(四)剪不断理还乱之:复合主键 && 组合映射

    一:复合主键 复合主键即两个或多个字段联合起来作为主键,它的通常做法是将主键相关字段抽取出来放到一个单独的类中,但是这样的类是有要求的: 1.      必须实现序列化接口 2.      必须覆盖e ...

  7. JavaScript面向对象编程(10)高速构建继承关系之对象拷贝

    前面的样例我们是通过构造器创建对象.而且希望该对象继承来自另外一个构造器的对象 我们也能够直接面向一个对象来达成继承的目的.使用下属步骤: 1.拷贝一个对象 2.给新对象加入属性 /** * 通过拷贝 ...

  8. thinkPHP 模板中的语法知识 详细介绍(十二)

    原文:thinkPHP 模板中的语法知识 详细介绍(十二) 本章节:介绍模板中的语法,详细的语法介绍 一.导入CSS和JS文件    ==>记住常量的是大写 1.css link .js  sc ...

  9. java图形

    JFreeCharteclipse图形化编程插件jigloojfaceibm的jface基于swt,swing解决了awt存在的lcd问题.swing组件:container,window,frame ...

  10. A Game of Thrones(20) - Eddard

    Eddard Stark rode through the towering bronze doors of the Red Keep sore, tired, hungry, and irritab ...