此项目源码下载地址:https://github.com/lizhiqiang0204/Tile

方格效果:

前端代码如下:

<Window x:Class="WpfApp1.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="" Width="">
<Window.Resources>
<!--自定义格式的背景的具体定义-->
<!--Viewport="0,0,50,50" 起点坐标为0, 长为50宽为50像素的矩形-->
<DrawingBrush x:Key="MyGridBrushResource" Viewport="0,0,50,50" ViewportUnits ="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<!--画横线-->
<GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="#CCCCFF" />
<!--画竖线-->
<GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="#CCCCFF" />
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush> <Style x:Key="MyCanvasStyle">
<!--自定义格式的背景为 MyGridBrushResource-->
<Setter Property="Canvas.Background" Value="{StaticResource MyGridBrushResource}"/>
</Style>
</Window.Resources> <Grid>
<!--放置一个画布 Canvas 格式为自定义格式MyCanvasStyle -->
<Canvas Name="_myCanvas" Style="{StaticResource MyCanvasStyle}" />
</Grid>
</Window>
Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" 此语法中M是移动命令,L是直线命令,Z是结束命令,详细资料参考官网https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/graphics-multimedia/path-markup-syntax#the-close-command
M0,0 L1,0 1,0.1, 0,0.1Z此语法中的数值都是比例的意思,(0,0)->(1,0)->(1,0.1)->(0,0.1)画了一个矩形,横坐标的1是1*50 = 50,0是0*50 = 0,0.1就是0.1*50 = 5纵坐标以此类推。(矩形 Viewport="0,0,50,50")

<!--画横矩形-->
<GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="#CCCCFF" />
<!--画竖矩形-->
<GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="#CCCCFF" />

效果图

TileMode="Tile" Tile是瓦片的意思,把TileMode设为None就是上图效果,设为Tile瓦片模式,就会横向纵向像瓦片一样展开,就是第一张图的效果。

我们把第三个点(0,0)->(1,0)->(1,0.1)->(0,0.1)纵坐标的0.1改成0.5比例的话(0,0)->(1,0)->(1,0.5)->(0,0.1)单个效果如下:

TileMode="Tile"瓦片模式效果

以上纯属个人理解,如有错误,望请更正!

  

WPF Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" 画方格背景图的更多相关文章

  1. 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本

    原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...

  2. 号外号外!WPF界面开发者福音,DevExpress支持.NET Core 3.0!

    通过DevExpress WPF Controls,你能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍 ...

  3. 解决: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19

    错误信息:C:\Python27\lib\site-packages\sklearn\utils\validation.py:395: DeprecationWarning: Passing 1d a ...

  4. Bash 中的 $0 在什么时候不是 argv[0]

    每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...

  5. Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package 1.0.1 supports: net (.NETFramework,Version=v0.0)

    Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package ...

  6. 在PHP应用中简化OAuth2.0身份验证集成:OAuth 2.0 Client

    在PHP应用中简化OAuth2.0身份验证集成:OAuth 2.0 Client   阅读目录 验证代码流程 Refreshing a Token Built-In Providers 这个包能够让你 ...

  7. Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1

    Cartfile:github "SwiftyJSON/SwiftyJSON"got error:Module compiled with Swift 3.0 cannot be ...

  8. 单机Oracle+asm(11.2.0.3.0) Patch Set Update(11.2.0.3.7 )

    之前写过一篇关于PSU升级的案例,参考如下: http://blog.csdn.net/jyjxs/article/details/8983880 但是,感觉有些地方理解的不是很透彻明白,照猫画虎的比 ...

  9. [渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0

    原文:[渣译文] SignalR 2.0 系列: 开始使用SignalR 2.0 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP ...

随机推荐

  1. leetcode-mid-backtracking -22. Generate Parentheses-79 Word Search -NO

    mycode   错误,因为借鉴了Number of Islands问题中的方法,导致在for循环中即使已经出现了答案,也还会继续遍历.但是两个题目的不同时,island需要找出所有的情况,这个题只需 ...

  2. Hybrid平台

    需求说明 离线包管理平台主要负责对需要接入Hybrid平台的应用进行管理,通过这个平台可以实现对应用的静态资源进行构建.发布.生成离线包,版本控制等,核心场景如下: 将需要做预加载的应用在平台上注册, ...

  3. Quartz最佳实践

    本文来自对http://www.quartz-scheduler.org/documentation/best-practices.html的翻译. 表示还没用过Quartz,正准备用的,然后在官网上 ...

  4. 会话跟踪之Cookie技术

    1. Cookie会话跟踪技术介绍 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,可以在客户 ...

  5. day65—angularJS的学习笔记1

    转行学开发,代码100天—2018-05-20 AngularJS的引用示例: <!DOCTYPE html> <html> <head> <title> ...

  6. spring的组件工厂后置处理器——BeanFactoryPostProcessor

    作用和调用时机 spring有两种后置处理器: 1. 组件后置处理器——org.springframework.beans.factory.config.BeanPostProcessor: 2. 工 ...

  7. Windows下对函数打桩,及Linux类似技术

    一个简单的桩实现类: #define JMPCODE_LENGTH 5 //x86 平坦内存模式下,绝对跳转指令长度 #define JMPCMD_LENGTH 1 //机械码0xe9长度 #defi ...

  8. Activity启动流程(三)

    这里对启动Activity过程中涉及到的ActivityStack.TaskRecord.ActivityRecord.ActivityStackSupervisor进行简单的分析,实际上一张时序图就 ...

  9. elasticsearch7.0安装及配置优化

    简单讲ES开箱即用,不用任何配置也能玩转搜索引擎:以下内容是根据易企秀线上实际使用场景进行的安装和配置,支持冷热数据分离 1.安装 Linux 环境下载安装包 curl -L -O https://a ...

  10. anr以及nlp语音自动化测试方案

    进行asr自动化测试 1.将人工语音录制的音频文件分为一句话一个文件,并将文件名命名为此句话,可以加后缀,例如:附近的公园_1 2.使用电脑连接蓝牙音箱,控制好距离角度等环境 3.使用python或者 ...