LinearGradientBrush线性渐变画刷

LinearGradientBrush其实很简单,我们只需要关注5个属性,使用这5个属性你就可以完成这个画刷几乎所有的变化。

一、属性介绍

1.StartPoint

渐变画刷的起点,默认规定起点坐标是(0,0)

注:这个0是指整个长度的0%的位置,而不是坐标为0。

2.EndPoint

渐变画刷的终点,默认规定终点坐标是(1,1)

注:这个1是指整个长度的100%的位置,而不是坐标为1。即0.5指的是影响一半的长度。


如图所示,从(0,0)(1,1)的渐变画刷会使颜色从左上角开始,平行向右下角位置渐变颜色。

3.MappingMode

该值指定渐变画笔的定位坐标的解释方式。
这个属性只有两个枚举值可选RelativeToBoundingBox(默认)Absolute

首先我们假设上面这个矩形Width=100,Height=50
使用RelativeToBoundingBox时,起点坐标和终点坐标就是(0,0)(1,1),和矩形长宽无关。
使用Absolute时,起点坐标和终点坐标就是(0,0)(100,50)

4.SpreadMethod

用于绘制渐变的扩展方法的类型
该属性有三个枚举值可选Pad(默认)ReflectRepeat
使用Pad时, 渐变向量末端的颜色值填充剩余的空间。
使用Reflect时, 按设置颜色的倒转方向重复渐变,直至充满空间。
使用Repeat时, 按原始方向重复渐变,直至充满空间。

5.GradientStops

该属性用于存放多个GradientStop,用于设置渐变停止点,之前设置的颜色会在渐变停止点停止渐变。
GradientStop有两个属性
Offset :偏移量,值为0~1表示渐变停止的坐标。
Color :颜色,该坐标的颜色。
上一个坐标的颜色会慢慢渐变成这个坐标的颜色。

二、实例

先上一个简单的例子:

1.一个从蓝色渐变成红色的画刷

<Windowx:Class="LinearGradientBrushDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:LinearGradientBrushDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"mc:Ignorable="d"><Window.Resources><!--一个从蓝色到红色的渐进画刷资源 --><LinearGradientBrush x:Key="Brush2" StartPoint="0,0" EndPoint="1,0"><LinearGradientBrush.GradientStops><!--开始为蓝色 --><GradientStop Offset="0" Color="Blue" /><!--结尾是红色 --><GradientStop Offset="1" Color="Red" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Window.Resources><Grid><BorderWidth="400"Height="300"Background="{StaticResource Brush2}" /></Grid>
</Window>
2.重复填充的画刷

设置SpreadMethod属性为Reflect或者Repeat时,可以实现重复填充。

<Windowx:Class="LinearGradientBrushDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:LinearGradientBrushDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"mc:Ignorable="d"><Window.Resources><!--从width=0到width=100的重复填充渐进画刷资源 --><LinearGradientBrush x:Key="Brush2" MappingMode="Absolute" SpreadMethod="Reflect" StartPoint="0,0" EndPoint="100,0"><LinearGradientBrush.GradientStops><!--开始为白色 --><GradientStop Offset="0" Color="White" /><!--结尾是红色 --><GradientStop Offset="1" Color="Red" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Window.Resources><Grid><BorderWidth="400"Height="300"Background="{StaticResource Brush2}" /></Grid>
</Window>
3.一个警戒线画刷

如果两个GradientStop之间颜色相同,那就不会发生渐变,这样就可以做出多条重复实线的画刷。

<Windowx:Class="LinearGradientBrushDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:LinearGradientBrushDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"mc:Ignorable="d"><Window.Resources><LinearGradientBrush x:Key="Brush2" MappingMode="Absolute" SpreadMethod="Reflect" StartPoint="0,0" EndPoint="10,10"><LinearGradientBrush.GradientStops><GradientStop Offset="1" Color="Yellow" /><GradientStop Offset="1" Color="Black" /><GradientStop Offset="0.5" Color="Black" /><GradientStop Offset="0.5" Color="Yellow" /><GradientStop Offset="0" Color="Yellow" /><GradientStop Offset="0" Color="Black" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Window.Resources><Grid><BorderWidth="400"Height="300"Background="{StaticResource Brush2}" /></Grid>
</Window>

对你有帮助吗?点个赞吧~

WPF(C#) LinearGradientBrush线性渐变画刷相关推荐

  1. WPF线性渐变画刷应用之——炫彩线条

    原文:WPF线性渐变画刷应用之--炫彩线条 效果图: Xaml代码: <Rectangle Width="800" Height="10"> < ...

  2. GDI+ 学习记录(10): 线性渐变画刷 - LinearGradientBrush

    为什么80%的码农都做不了架构师?>>>    //线性渐变画刷 varg: TGPGraphics;lb: TGPLinearGradientBrush;rect: TGPRect ...

  3. 转 Silverlight开发历程—(画刷与着色之线性渐变画刷)

    转自:http://blog.csdn.net/work201003/article/details/6960427 线性渐变画刷(LinearGradientBrush)用来填充一个复合渐变色到一个 ...

  4. GDI+学习之线性渐变画刷

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱 ...

  5. GdiplusFlat(4)单色画刷 和 线性渐变画刷

    本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article ...

  6. WPF图形之纯色画刷和渐变画刷的使用

    背景介绍   在WPF中,画刷的使用无处不在,可以说画刷是整个WPF体系里不可或缺的一部分,在画刷中,从渲染效果的特征来看,可以分为纯色画刷.线性渐变画刷.径向渐变画刷.每一种画刷都有其适用的场景,下 ...

  7. WPF中的渐变画刷的一些案例

    WPF的渐变画刷,这些画刷改变不同DrawingBrush对象的几何图形,创建渐变为不同形状的平铺模式. 下面是来自一个国外的一些渐变画刷案例: 案例1:定义一个简单的直线,这个几何图形是基于Draw ...

  8. GDI+学习笔记(六)渐变画刷

    画刷,顾名思义,就是像画刷一样,向设备上绘制,还记得小时候常唱的首歌,"我是一个粉刷匠.." 好吧,跑题了. 本系列博客希望尽可能简单的描述每项功能,而不希望把每个参数都介绍的详详 ...

  9. GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush

    为什么80%的码农都做不了架构师?>>>    //路径渐变画刷 varg: TGPGraphics;path: TGPGraphicsPath;pb: TGPPathGradien ...

最新文章

  1. DPDK vhost-user研究(九)
  2. Java写十进制和二进制互转
  3. debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志
  4. [C语言]一个很实用的服务端和客户端进行UDP通信的实例
  5. ciclop读音,购机必备,15种 3D扫描 设备 优缺点汇总
  6. Mybatis3 (2)xml映射文件
  7. 织梦编辑器加HTML视频显示很小,织梦去掉编辑器自动加div的方法即大小字情况...
  8. dbutils java_Dbutils工具类的使用
  9. onContextItemSelected 与 onMenuItemSelected 的那些事
  10. OpenCV 图像编解码操作【imencode/imdecode】使用
  11. svn 冲突解决方法
  12. Java基础练习题及详细答案
  13. 普林斯顿微积分读本07第五章--可导性
  14. linux设备驱动程序第10章,linux中秒字符设备驱动(宋宝华设备驱动开发详解第10章)...
  15. 【jms】Listener method could not be invoked with incoming message
  16. 芝加哥犯罪率数据集(数据分析与特征处理)
  17. 全球及中国汽车机电开关行业十四五发展规划及投资前景分析报告2022-2028年
  18. C++:运算符重载与类的赋值运算符重载函数
  19. EMC电磁兼容测试项目简介
  20. MOOG D634-319C

热门文章

  1. 什么是栅格系统?Bootstrap执行栅格操作
  2. 计算机系统集成专项资质,建筑智能化系统集成设计专项资质
  3. Quartus||在Ubuntu内安装Quartus Prime Lite版20.1
  4. 自学编程的请看,这些坑一个比一个坑!慎重!
  5. 【Java基础】循环、嵌套、跳转控制break/continue、调试器、函数
  6. 【Luat-air551G】4 air551G连接esp32获取GGA数据
  7. 安卓ROM内置推广联盟赚钱 开发者联盟 精英助手 APP推广包获取 推广包渠道
  8. Linux 系统中kill命令杀死进程常用技巧
  9. 每日一书丨由浅入深解析软件自动化的痛点问题
  10. 1、Python基础课件