c# - [WPF]如何在 Canvas 上绘制网格?

标签 c# .net wpf wpf-controls wpf-4.0

如何在继承自Canvas-系统ui元素的自定义 Canvas 上绘制如下图表作为背景?

感谢您提供任何有用的链接。

Grid

最佳答案

您可以将 Canvas.Background 设置为一些 DrawingBrush。这个画笔只需要渲染一个矩形(通过使用一些RectangleGeometry)。由于支持 TileMode,我们可以沿水平轴和垂直轴重复此矩形并为您制作完整的网格:

<Canvas>
    <Canvas.Background>
       <DrawingBrush TileMode="Tile" Viewport="-10,-10,40,40" 
                                     ViewportUnits="Absolute">
          <DrawingBrush.Drawing>
             <GeometryDrawing>                 
                <GeometryDrawing.Geometry>
                   <RectangleGeometry Rect="0,0,50,50"/>
                </GeometryDrawing.Geometry>
                <GeometryDrawing.Pen>
                   <Pen Brush="Gray" Thickness="1"/>
                </GeometryDrawing.Pen>
             </GeometryDrawing>
          </DrawingBrush.Drawing>
       </DrawingBrush>
    </Canvas.Background>
 </Canvas>

请注意,您可以在 Canvas 之外绘制某些内容,但其背景始终位于其区域内。因此,您需要正确设置 Canvas 的大小。

关于c# - [WPF]如何在 Canvas 上绘制网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26635635/

相关文章:

c# - 分组而不复制供应商行

c# - WCF 服务方法在 WCF 测试客户端中不可用,因为它使用类型

c# - 将 View 模型属性分组到不同的类别中是一种好的做法吗?

c# - StringFormat 中的百分比

c# - Directory.Copy 失败,因为 *.mdf 正在被 C# 中的另一个进程访问

c# - 如何检查正则表达式组是否相等?

c# - 在 MVVM 中,播放来自 Model 还是 ViewModel 的媒体文件?

c# - WPF - 如何在 ViewModel 之间共享集合的单个实例?

c# - 在单声道中加密 web.config 的配置部分

c# - 无法从程序集 'iTextSharp.text.html.HtmlParser' 加载类型 'itextsharp, Version=5.5.5.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'