WPF的ImageBrush是一个比较常见也比较复杂的笔刷,它继承自图块笔刷(TileBrush)。使用图块画笔绘制区域涉及以下三个组成部分:内容、基本图块和输出区域。基本输出过程如下图所示:

其中,图块部分有Viewbox控制,输出区域有Viewport控制,它们默认情况下都是一个(0,0,1,1)的矩形,通过相对位置控制图象的输出。可以组合使用,下表就是一些简单的示例:


Viewport="0,0,0.5,0.5"


Viewbox="0,0,0.5,0.5"


Viewport="0,0,0.5,0.5"
Viewbox="0,0,0.5,0.5"

默认情况下,Viewport和Viewbox都是使用的相对范围,默认是(0,0,1,1)。如果要设置绝对范围,可以设置ViewboxUnits="Absolute"和ViewportUnits="Absolute"

 

平铺笔刷

有时我们需要像墙纸那样讲一个图片重复绘制,如下图所示

简单的方法是

  1. 设置Viewport,使得原图只投影到一部分输出区域(投影到全部输出区域看不到平铺效果)
  2. 设置TileMode为Tile


Viewport="0,0,0.5,0.5"
Viewbox="0,0,0.5,0.5" TileMode="Tile"


TileMode="FlipX"


TileMode="FlipY"


TileMode="FlipXY"

另外,还有一些比较常见的属性:AlignmentX,AlignmentY,Stretch。这里就不一一介绍了,具体可参看MSDN文档:

https://msdn.microsoft.com/zh-cn/library/aa970682(v=vs.110).aspx

WPF中的ImageBrush常用方式的更多相关文章

  1. WPF中的DependencyProperty存储方式详解

    前言 接触WPF有一段时间了,之前虽然也经常使用,但是对于DependencyProperty一直处于一知半解的状态.今天花了整整一下午将这个概念梳理了一下,自觉对这个概念有了较为清晰的认识,之前很多 ...

  2. [转]Shell中read的常用方式

    原文:Linux Shell Scripting Tutorial V2.0 read命令的语法: read -p "Prompt" variable1 variable2 var ...

  3. Ajax—web中ajax的常用方式

    什么Web2.0的特点? 1:注重用户贡献度 2:内容聚合RSS协议(每小块都个性化,单独加载单独请求,不用全部刷新--Ajax) 3:更丰富的用户体验 Ajax的概念? "Asynchro ...

  4. Shell中read的常用方式

    read命令的语法: read -p "Prompt" variable1 variable2 variableN -p "Prompt": 显示提示信息(和用 ...

  5. WPF中的一些常用类型转换

    1.string和Color的转换: //string转Color (Color)ColorConverter.ConvertFromString((string)str); //Color转stri ...

  6. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  7. WPF 中的 Pack URI地(资源文件加载)

    参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...

  8. WPF中的URI

    在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI ...

  9. WPF中的文本度量

    关于WPF中的文本度量,需要了解以下几个问题: WPF中支持一些常用的度量单位:px(device independent pixels).in(inches).cm(centimeters).pt( ...

随机推荐

  1. ArcMap2SLD添加中文支持

    首先,你可以从作者提供的链接下载ArcMap2SLD.zip(支持ArcMap10.2) 1.打开LUT_sld_mapping_file.xml文件(上传文件中已经修改)修改文件<LUT> ...

  2. webpack3学习笔记

    地址:https://segmentfault.com/a/1190000006843916 地址:https://www.chungold.com/my/course/32 地址:http://js ...

  3. 安卓ios各版本及分辨率占比

    Google Play 安装统计数据 只有安卓的 https://developer.android.com/about/dashboards/index.html?hl=zh-cn 腾讯移动分析 安 ...

  4. 程序设计分层思想和DAO设计模式的开发

    无论是一个应用程序项目还是一个Web项目,我们都可以按照分层思想进行程序设计.对于分层,当下最流行划分方式是:表现层+控制层+业务层+数据层.其中,业务层和数据层被统称为后台业务层,而表现层和控制层属 ...

  5. HDU 3360 National Treasures(最小点覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3360 题目大意: 在一个n*m的格子中,每个格子有一个数值,-1表示空,其余表示财宝.每个财宝的数值转 ...

  6. Effective STL 学习笔记14: Use reserve to avoid unnecessary reallocations.

    vector 和 string 容器在动态插入一个新的对象时,如果容器内空间不够,该容器会: 重新分配空间 通常的做法是分配当前 Capacity 大小两倍的空间. 将旧空间中的所有元素拷贝进新的空间 ...

  7. WinForm界面开发之 启动界面

    我们在开发桌面应用程序的时候,由于程序启动比较慢,往往为了提高用户的体验,增加一个闪屏,也就是SplashScreen,好处有:1.让用户看到加载的过程,提高程序的交互响应:2.可以简短展示或者介绍程 ...

  8. centos killall安装

    https://blog.csdn.net/joeyon1985/article/details/46707865 https://blog.csdn.net/xupeng874395012/arti ...

  9. day8--by a gentlement man

    1.着装得体(不要国产.不要Jack&Johnson.selected),人都是势利眼,高素质和低素质人的区别,高素质是心里明白歧视你,但是不说:低素质是直接表示出来:lower,屌丝     ...

  10. day6 hashlib模块

        hashlib模块 用于加密相关的文件操作,3.X离代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 __always_sup ...