[WPF]如何在画布上绘制网格?

时间:2014-10-29 16:22:23

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

如何将以下图表绘制为从Canvas继承的自定义画布上的背景 - 系统ui元素?

感谢任何有用的链接。

Grid

1 个答案:

答案 0 :(得分:13)

您可以将Canvas.Background设置为某个DrawingBrush。这个画笔只需要渲染一个Rectangle(通过使用一些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>

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