WPF(C#) LinearGradientBrush线性渐变画刷
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(默认)
,Reflect
,Repeat
。
使用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线性渐变画刷相关推荐
- WPF线性渐变画刷应用之——炫彩线条
原文:WPF线性渐变画刷应用之--炫彩线条 效果图: Xaml代码: <Rectangle Width="800" Height="10"> < ...
- GDI+ 学习记录(10): 线性渐变画刷 - LinearGradientBrush
为什么80%的码农都做不了架构师?>>> //线性渐变画刷 varg: TGPGraphics;lb: TGPLinearGradientBrush;rect: TGPRect ...
- 转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
转自:http://blog.csdn.net/work201003/article/details/6960427 线性渐变画刷(LinearGradientBrush)用来填充一个复合渐变色到一个 ...
- GDI+学习之线性渐变画刷
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱 ...
- GdiplusFlat(4)单色画刷 和 线性渐变画刷
本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article ...
- WPF图形之纯色画刷和渐变画刷的使用
背景介绍 在WPF中,画刷的使用无处不在,可以说画刷是整个WPF体系里不可或缺的一部分,在画刷中,从渲染效果的特征来看,可以分为纯色画刷.线性渐变画刷.径向渐变画刷.每一种画刷都有其适用的场景,下 ...
- WPF中的渐变画刷的一些案例
WPF的渐变画刷,这些画刷改变不同DrawingBrush对象的几何图形,创建渐变为不同形状的平铺模式. 下面是来自一个国外的一些渐变画刷案例: 案例1:定义一个简单的直线,这个几何图形是基于Draw ...
- GDI+学习笔记(六)渐变画刷
画刷,顾名思义,就是像画刷一样,向设备上绘制,还记得小时候常唱的首歌,"我是一个粉刷匠.." 好吧,跑题了. 本系列博客希望尽可能简单的描述每项功能,而不希望把每个参数都介绍的详详 ...
- GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush
为什么80%的码农都做不了架构师?>>> //路径渐变画刷 varg: TGPGraphics;path: TGPGraphicsPath;pb: TGPPathGradien ...
最新文章
- DPDK vhost-user研究(九)
- Java写十进制和二进制互转
- debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志
- [C语言]一个很实用的服务端和客户端进行UDP通信的实例
- ciclop读音,购机必备,15种 3D扫描 设备 优缺点汇总
- Mybatis3 (2)xml映射文件
- 织梦编辑器加HTML视频显示很小,织梦去掉编辑器自动加div的方法即大小字情况...
- dbutils java_Dbutils工具类的使用
- onContextItemSelected 与 onMenuItemSelected 的那些事
- OpenCV 图像编解码操作【imencode/imdecode】使用
- svn 冲突解决方法
- Java基础练习题及详细答案
- 普林斯顿微积分读本07第五章--可导性
- linux设备驱动程序第10章,linux中秒字符设备驱动(宋宝华设备驱动开发详解第10章)...
- 【jms】Listener method could not be invoked with incoming message
- 芝加哥犯罪率数据集(数据分析与特征处理)
- 全球及中国汽车机电开关行业十四五发展规划及投资前景分析报告2022-2028年
- C++:运算符重载与类的赋值运算符重载函数
- EMC电磁兼容测试项目简介
- MOOG D634-319C
热门文章
- 什么是栅格系统?Bootstrap执行栅格操作
- 计算机系统集成专项资质,建筑智能化系统集成设计专项资质
- Quartus||在Ubuntu内安装Quartus Prime Lite版20.1
- 自学编程的请看,这些坑一个比一个坑!慎重!
- 【Java基础】循环、嵌套、跳转控制break/continue、调试器、函数
- 【Luat-air551G】4 air551G连接esp32获取GGA数据
- 安卓ROM内置推广联盟赚钱 开发者联盟 精英助手 APP推广包获取 推广包渠道
- Linux 系统中kill命令杀死进程常用技巧
- 每日一书丨由浅入深解析软件自动化的痛点问题
- 1、Python基础课件