画刷Brush使用

画刷类

  • SolidColorBrush
  • LinearGradientBrush
  • RadialGradientBrush
  • ImageBrush
  • VisualBrush
  • DrawingBrush

SolidColorBrush

SolidColorBrush是最常用到的画刷类,它的构造最简单,一种纯色画刷。

通常可通过Brushes来获取系统预先定义好的颜色画刷,也可以自己创建。例如:

Brush red = Brushes.Red;//红色画刷
Brush green = Brushes.Green;//绿色画刷
Brush blue = Brushes.Blue;//蓝色画刷
SolidColorBrush red = new SolidColorBrush(Colors.Red);//红色画刷

在xaml中使用纯色画刷也很方便:

<Grid Background="Blue">
</Grid> <Grid Background="#FF952C7D">
<Grid/>

LinearGradientBrush

LinearGradientBrush是线性渐变画刷。

<Grid.Background>
<LinearGradientBrush MappingMode="RelativeToBoundingBox" ColorInterpolationMode="ScRgbLinearInterpolation" StartPoint="0,0" EndPoint="1,1">
<GradientStopCollection>
<GradientStop Color="Red" Offset="0.2"/>
<GradientStop Color="Blue" Offset="0.5"/>
<GradientStop Color="Green" Offset="0.8"/>
</GradientStopCollection>
</LinearGradientBrush>
</Grid.Background>

其中GradientStop用于设置渐变颜色

RadialGradientBrush

RadialGradientBrush是径向渐变

<Grid.Background>
<RadialGradientBrush RadiusX="1" RadiusY="1" Center="0.1,0.2" GradientOrigin="0.2,0.2">
<GradientStopCollection>
<GradientStop Color="Red" Offset="0.2"/>
<GradientStop Color="Blue" Offset="0.6"/>
<GradientStop Color="Green" Offset="0.8"/>
</GradientStopCollection>
</RadialGradientBrush>
</Grid.Background>

ImageBrush

ImageBrush与剩余两种都继承于TileBrush类。ImageBrush是图片画刷,可以设置图片作为画刷来使用。

<Grid.Background>
<ImageBrush Stretch="Fill" Viewport="0,0,0.1,0.1" ViewportUnits="RelativeToBoundingBox" TileMode="Tile" ImageSource="/Images/ico_head.png"/>
</Grid.Background>

其中Stretch属性与Image中的属性效果一样,表示该图片在一定区域内的表现形式。

TileMode表示填充的方式。

TileMode="Tile"



TileMode="FlipX"



TileMode="FlipXY"



TileModel="FlipY"



可以发现设置不同的TileMode的值,所表现出来的效果是有很大不同的。

Viewport属性用于设置显示区域的大小。它与ViewportUnits一块配合使用。

ViewportUnits默认是相对值。

VisualBrush

可以将一般的图形设置为背景

<Grid.Background>
<VisualBrush TileMode="Tile" Viewbox="0,0,2,2" Viewport="0,0,0.1,0.1">
<VisualBrush.Visual>
<TextBlock Text=" 水印文本 "/>
</VisualBrush.Visual>
</VisualBrush>
</Grid.Background>

DrawingBrush

DrawingBrush可以使用绘制

<Grid.Background>
<DrawingBrush Viewport="0,0,200,220" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="White">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,200,220"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Pen="{StaticResource SolidLine}" Geometry="M0,0 L200,0 200,200 0,200z"/>
<GeometryDrawing Pen="{StaticResource DottedLine}" Geometry="M100,0 L100,200"/>
<GeometryDrawing Pen="{StaticResource DottedLine}" Geometry="M0,100 L200,100"/>
<GeometryDrawing Geometry="M0,210 L200,210">
<GeometryDrawing.Pen>
<Pen Brush="Transparent" Thickness="10"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Grid.Background>

WPF中Brush类型的更多相关文章

  1. wpf中xaml的类型转换器与标记扩展

    原文:wpf中xaml的类型转换器与标记扩展 这篇来讲wpf控件属性的类型转换器 类型转换器 类型转换器在asp.net控件中已经有使用过了,由于wpf的界面是可以由xaml组成的,所以标签的便利也需 ...

  2. 简述WPF中的画刷(Brush)

    原文:简述WPF中的画刷(Brush) -------------------------------------------------------------------------------- ...

  3. WPF中实现验证码功能

    其实和winform中的实现差不多,只是由于WPF中控件使用的库与winform中的有区别,大体上还是差不多的,直接看代码: 产生验证码的类:ValidCode.cs public class Val ...

  4. WPF中的Drawing

    以前在用WinForm的时候,可以通过GDI+接口在窗体上动态绘制自定义的图形.在WPF中有没有对应的API呢,最近项目中用到了这个,在这里总结一下. WPF中的Drawing主要提供了几类API: ...

  5. [No000012C]WPF(4/7)类型转换器和标记扩展[译]

    介绍 之前讨论了WPF的基础架构,然后逐步开始学习布局面板,转换,介绍了不同的控件,容器,UI转换等.在这篇文章中,我将讨论每个创建XAML应用前的开发人员应该了解的关于XAML最重要的东西. 标记扩 ...

  6. 在WPF中创建可换肤的用户界面

    原文:在WPF中创建可换肤的用户界面 在WPF中创建可换肤的用户界面.                                                                  ...

  7. WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)

    原文 WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object) 众所周知的,WPF 中多数对象都继承自 Dispatch ...

  8. WPF中的3D特性和常见的几个类

    原文:WPF中的3D特性和常见的几个类 WPF 3D 常用的几个类及其关系 1.  Visual 类      所有二维可视化元素的基类,为 WPF 中的呈现提供支持,其中包括命中测试.坐标转换和边界 ...

  9. 在WPF中添加3D特性

    原文:在WPF中添加3D特性 35.4  在WPF中添加3D特性 本节介绍WPF中的3D特性,其中包含了开始使用该特性的信息. 提示: WPF中的3D特性在System.Windows.Media.M ...

随机推荐

  1. C++入门经典-例7.2-利用构造函数初始化成员变量

    1:在创建对象时,程序自动调用构造函数.同一个类中可以有多个构造函数,通过这样的形式创建一个CPerson对象,例如: CPerson p1(0,"jack",22,7000); ...

  2. Samba windows 10 share: mount error(112): Host is down

    Windows 10 Share File: //10.108.xx.xx/lnxvda-rf/ROBOT [root@rhels73 robot]# mount -t cifs -o usernam ...

  3. Java Jsch SFTP 递归下载文件夹

    Java Program For Downloading Folder Content recursively from SFTP Server How to download folder from ...

  4. win7远程连接ubuntu,出现灰屏解决方法

      问题: win7远程虚拟机ubuntu 12.04出现灰色屏幕 打开windows自带的远程桌面连接.输入ubuntu虚拟机的IP地址 可以连接上,输入username和password 点击OK ...

  5. koa 基础(十三)koa-art-template 模板引擎的使用

    1.项目目录 2.app.js /** * http://aui.github.io/art-template/koa/ * 1.npm install --save art-template * n ...

  6. itertools模块中的product方法

    itertools模块中的product方法 itertools.product(*iterables[, repeat]) 笛卡尔积 创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔 ...

  7. 四、SpringBoot出现报错:java.lang.NoSuchMethodError: org.springframework.http.MediaType.equalsTypeAndSubtype(Lorg/springframework/util/MimeType;)Z

    idea启动SpringBoot项目后,出现如下错误: 2019-11-19 15:24:44.344 ERROR 39168 --- [nio-8443-exec-1] o.a.c.c.C.[.[. ...

  8. 多线程分配线程的实现方案:CountDownLatch类

    需求:假如我们本地有4个文件需要解析,每个文件的内容为20万行.为了提高效率我们要创建4个线程进行处理.等4个线程处理完,要在文件日志表中记录处理状态. 一般的的解决方法是使用join,join用于让 ...

  9. JMeter 中的如何区分 Server Time 和 Network Time

    在 LR 中是有一个“网页细分图”的,通过这个图,你可以比较容易的区分哪些请求的响应时间最长,如果响应时间过程,是消耗在server处理的时候,还是消耗在网络传输过程中——也就是所谓的 Server ...

  10. Java语言实现 Base64 加密 & 解密

    Java语言实现 Base64 加密 & 解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64 ...