原文:WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush)

前面我们介绍到,Path对象表示一个用直线或者曲线连接的图形,我们可以使用Path.Data属性来设置该图形的形状,同时我们也可以使用Data.Fill属性来设置该图形中的填充色或背景图片等。

下面我们先来看一段代码

<Window x:Class="WPF.SimpleGraph.PathFill.Window1"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="Window1" Height="300" Width="300">    <Canvas>        <Path Stroke="DarkGray" StrokeThickness="2">            <Path.Data>                <PathGeometry>                    <PathFigure StartPoint="40,40" IsClosed="True">                        <LineSegment Point="40,130"></LineSegment>                        <ArcSegment Point="60,150" Size="20,20" ></ArcSegment>                        <LineSegment Point="200,150"></LineSegment>                        <ArcSegment Point="220,130" Size="20,20"></ArcSegment>                        <LineSegment Point="220,40"></LineSegment>                        <ArcSegment Point="200,20" Size="20,20"></ArcSegment>                        <LineSegment Point="60,20"></LineSegment>                        <ArcSegment Point="40,40" Size="20,20"></ArcSegment>                    </PathFigure>                </PathGeometry>            </Path.Data>            <Path.Fill>                <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">                    <GradientStop Color="White" Offset="0.25"></GradientStop>                    <GradientStop Color="LightBlue" Offset="0.5"></GradientStop>                    <GradientStop Color="Blue" Offset="0.75"></GradientStop>                    <GradientStop Color="DarkBlue" Offset="1"></GradientStop>                </LinearGradientBrush>            </Path.Fill>        </Path>    </Canvas></Window>

它的执行结果是:

下面我们来分析一下该图形的产生原理

首先,我们通过Path.Data来绘制了一个弧形角的矩形

然后,使用Path.Fill来向该矩形中填充渐变色。

 LinearGradientBrush类:使用线性渐变绘制区域。

我们可以使用LinearGradientBrush类来绘制一个颜色渐变的区域,它有一个StartPoint属性表示线性渐变的二维起始坐标,而EndPoint指渐变的终止坐标。默认的线性渐变是沿对角方向进行的。

如图所示,它描绘了以对角线方向描绘渐变线

渐变值的取值范围是0-1,它用小数来表示从起点到终点的比率

比如说,我们想要以水平中轴来做渐变线(如下图)

我们可以将调整StartPoint和EndPoint

<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">

我们可以使用GradientStop来描述渐变的颜色和位置。

 GradientStop类:描述渐变中过渡点的位置和颜色。

GradientStop的Color属性表示渐变的颜色,Offset表示渐变从上一个位置开始,到Offset位置结束的渐变

例如下面的代码

<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">    <GradientStop Color="Yellow" Offset="0.5"></GradientStop>    <GradientStop Color="LightBlue" Offset="0.7"></GradientStop></LinearGradientBrush>

它表示从0-0.5这个段区域的颜色是Yellow

0.5-0.7这段区域表示从Yellow到LightBlue的渐变

0.7-1这段区域的颜色是LightBlue

WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush)的更多相关文章

  1. WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush)

    原文:WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 前面我们提到了LinearGradientBrush可以用来画渐变填充图,那么我们同时也可以使用ImageBr ...

  2. WPF 入门笔记之控件内容控件

    一.控件类 在WPF中和用户交互的元素,或者说.能够接受焦点,并且接收键盘鼠标输入的元素所有的控件都继承于Control类. 1. 常用属性: 1.1 Foreground:前景画刷/前景色(文本颜色 ...

  3. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

  4. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...

  5. WPF入门教程系列一

    WPF入门教程 一.  前言  公司项目基于WPF开发,最近项目上线有点空闲时间写一篇基于wpf的基础教材,WPF也是近期才接触,学习WPF也是在网上查资料与微软的MSDN进行学习,写本博客的目为了温 ...

  6. WPF入门:数据绑定

    上一篇我们将XAML大概做了个了解 ,这篇将继续学习WPF数据绑定的相关内容 数据源与控件的Binding Binding作为数据传送UI的通道,通过INotityPropertyChanged接口的 ...

  7. WPF入门教程系列三——Application介绍(续)

    接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...

  8. WPF入门教程系列二——Application介绍

    一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...

  9. WPF入门(三)->两个几何图形合并(CombinedGeometry)

    原文:WPF入门(三)->两个几何图形合并(CombinedGeometry) 在WPF中,提供了一个CombinedGeometry对象可以使两个几何图形合并产生效果 CombinedGeom ...

随机推荐

  1. python 的 reshape强制转换格式的用途

    shu=[[ 0.03046758], [ 0.05485586], [ 0.03282908], [ 0.02107211], [ 0.0391144 ], [ 0.07847244], [ 0.1 ...

  2. 修改shm,oracle11g需要扩大共享内存

    作者:david_zhang@sh [转载时请以超链接形式标明文章] 链接:http://www.cnblogs.com/david-zhang-index/archive/2012/04/26/24 ...

  3. GO语言学习(十二)Go 语言函数

    Go 语言函数 函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回 ...

  4. C# 文件转byte数组,byte数组再转换文件

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  5. 【习题 6-9 UVA - 127】"Accordian" Patience

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表模拟即可. 1pile不能加s... [代码] #include <bits/stdc++.h> using nam ...

  6. 项目太大tomcat启动不起来

    双击server,Open launch configuration Arguments VM arguments增加参数: -Xms512m -Xmx1024m -Xss4m -XX:PermSiz ...

  7. (转)ORA-01940: cannot drop a user that is currently connected 问题解析

    删除数据库用户的时候经常会遇到这样的错误: ORA: cannot drop a user that is currently connected 原因是有程序在连接我们需要删除的用户,我们删除用户之 ...

  8. [D3] Better Code Organization with selection.call() with D3 v4

    Most of D3’s native selection APIs also return the selection (or a new selection), to enable multipl ...

  9. AE 获取地图上当前选中的要素

    樱木 原文 AE开发----获取地图上当前选中的要素 Code1 int selCount = axMapControl1.Map.SelectionCount; IEnumFeature pEnum ...

  10. ASI使用

    一.ASI类库集成: .添加源代码文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m ASICacheDelegate.h ASIDataCo ...