我正在尝试平铺相对于像素大小的画布背景。这就是我现在所拥有的......
我希望它看起来像这样...... 我只想使用代码在后台创建一个平铺网格。我不想使用png或图像文件来创建网格。
<Window x:Class="graph_view.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:graph_view"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="10"></TextBox>
<Canvas Grid.Row="1">
<Canvas.Background>
<DrawingBrush TileMode="Tile" Viewbox="0,0,20,20" ViewportUnits="RelativeToBoundingBox" AlignmentX="Left" AlignmentY="Top">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="sc# 1.0, 0.02, 0.02, 0.02">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,20,20" />
</GeometryGroup>
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Thickness="1" Brush="red"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Canvas.Background>
</Canvas>
</Grid>
</Window>
答案 0 :(得分:4)
<Canvas>
<Canvas.Background>
<VisualBrush TileMode="Tile" Stretch="Uniform" Viewport="10,10,10,10" ViewportUnits="Absolute">
<VisualBrush.Visual>
<Rectangle Width="10" Height="10" Fill="Black" Stroke="Red"/>
</VisualBrush.Visual>
</VisualBrush>
</Canvas.Background>
</Canvas>
将矩形StrokeThickness
值更改为更多厚度网格。将ViewPort
和Width
以及Height
更改为更大的网格。
<Canvas >
<Canvas.Background>
<VisualBrush TileMode="Tile" Stretch="Uniform" Viewport="20,20,20,20" ViewportUnits="Absolute">
<VisualBrush.Visual>
<Rectangle Width="20" Height="20" Fill="Black" Stroke="Red" StrokeThickness="0.1"/>
</VisualBrush.Visual>
</VisualBrush>
</Canvas.Background>
</Canvas>
答案 1 :(得分:2)
首先在XAML中命名网格。
在代码隐藏文件中,创建一个循环网格实际宽度的方法,并循环网格的实际高度。
在宽度循环中,您将向网格添加新列,高度循环将添加新行,然后添加具有黑色背景和红色边框的新边框。
在init之后调用构造函数中的方法。
只需将宽度传递给方法即可提供网格行和列的宽度和高度属性。
这也可以通过XAML轻松完成。