Я пытаюсь нарисовать на холсте сетку, в которой:
- Линии всегда имеют толщину в один пиксель
- Размер квадратной плитки выражается в пикселях илидругими словами, расстояние между каждой горизонтальной и вертикальной линиями указывается в пикселях и может быть привязано к коду позади, чтобы я мог изменить его во время выполнения.
Это моя первая попытка, но, возможно, я 'используя неправильные элементы управления.
<Canvas Panel.ZIndex="0" x:Name="TileCanvas">
<Grid Panel.ZIndex="5">
<Rectangle Width="{Binding ElementName=TileCanvas, Path=ActualWidth}" Height="{Binding ElementName=TileCanvas, Path=ActualHeight}"
Stroke="Black" StrokeThickness="0">
<Rectangle.Fill>
<DrawingBrush ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Viewport>
<MultiBinding Converter="{StaticResource RectConverter}">
<...>
</MultiBinding>
</DrawingBrush.Viewport>
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="Green" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
<GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="Green" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
</DrawingGroup>
</DrawingBrush.Drawing>
<DrawingBrush.Transform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</DrawingBrush.Transform>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
Это решение позволяет мне изменять размер каждой плитки, но:
- Я не нашел способа исправить толщину линии.до одного пикселя
- Когда я изменяю DrawingBrush.Viewport с помощью конвертера, я увеличиваю плитку (Отлично!), но толщина линий увеличивается (бу).