类似于方格纸的外观,我想在画布的背景上绘制不同颜色的直线以形成网格.以下代码适用于仅绘制红线.我还想绘制一些蓝线和灰线.这意味着我还需要两组线,到目前为止,我还无法解决绘制新的其他颜色线的问题.
重申...这段代码正在做我想要的单色.但我也想添加不同颜色的线条.
您可以将多个画布添加到根画布,每个画布都有自己的背景笔:
<ScrollViewer HorizontalScrollBarVisibility="Visible"> <Canvas > <Canvas > <Canvas.Background> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 10,10" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,10"/> <LineGeometry StartPoint="0,0" EndPoint="10,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="DarkGray"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Canvas.Background> </Canvas> <Canvas > <Canvas.Background> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 50,50" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,50"/> <LineGeometry StartPoint="0,0" EndPoint="50,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="Blue"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Canvas.Background> </Canvas> <Canvas > <Canvas.Background> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 100,100" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,100"/> <LineGeometry StartPoint="0,0" EndPoint="100,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="Red"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Canvas.Background> </Canvas> </Canvas> </ScrollViewer>
或者,你可以使用VisualBrush
,它构造一个刷子UIElement
.因此,您可以Grid
使用Rectangles
内部或任何类似方法制作画布背景:
<Canvas> <Canvas.Background> <VisualBrush> <VisualBrush.Visual> <Grid> <Rectangle > <Rectangle.Fill> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 10,10" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,10"/> <LineGeometry StartPoint="0,0" EndPoint="10,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="DarkGray"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Rectangle.Fill> </Rectangle> <Rectangle > <Rectangle.Fill> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 50,50" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,50"/> <LineGeometry StartPoint="0,0" EndPoint="50,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="Blue"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Rectangle.Fill> </Rectangle> <Rectangle > <Rectangle.Fill> <DrawingBrush Stretch="None" TileMode="Tile" Viewport="0,0 100,100" ViewportUnits="Absolute"> <DrawingBrush.Drawing> <GeometryDrawing> <GeometryDrawing.Geometry> <GeometryGroup> <LineGeometry StartPoint="0,0" EndPoint="0,100"/> <LineGeometry StartPoint="0,0" EndPoint="100,0"/> </GeometryGroup> </GeometryDrawing.Geometry> <GeometryDrawing.Pen> <Pen Thickness="1" Brush="Red"/> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingBrush.Drawing> </DrawingBrush> </Rectangle.Fill> </Rectangle> </Grid> </VisualBrush.Visual> </VisualBrush> </Canvas.Background> </Canvas>