[英]How to draw a grid in WPF
我正在尝试在WPF中创建一个用户控件来表示Go板 ,它基本上只是一些黑色线条网格,在某些交叉点上带点。
目前我正在使用网格控件来处理宝石的放置,但其中一个难点是石头被放置在网格线的交叉点而不是它们之间,所以如果我想绘制线条,他们需要穿过网格单元的中心。
我还是WPF的新手,所以我不确定我应该如何接近这个; 我应该在每次控件渲染时手动绘制线条(如果是,如何?),还是有更好的方法?
你可以通过多种方式解决这个问题。
例如。 一种方法是使用DrawingBrush填充Panel的背景。 以下是一些DrawingBrush示例:
(来源: microsoft.com )
很可能你不必使用Grid。 随机定位Canvas适合更好。 如果您不喜欢画笔,可以使用几何图形或形状来绘制线条或其他图形。 我不是指你在DrawingVisuals,因为从一开始他们的理解可能会稍微强一些。
更新 :在CodeProject上找到这篇文章: 在WPF中绘制一个Boardgame 。 也许你会发现它很有用。
希望这可以帮助,
干杯,安瓦卡。
前一段时间我创建了一个checkmate板,我创建了一个ItemsControl,其中每个元素也是ItemsControl,带有小矩形模板。 这是我的代码
<UserControl x:Class="Checker.Controls.Board"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:models="clr-namespace:Checker.Models"
xmlns:usercontrols="clr-namespace:Checker.Controls"
xmlns:converters="clr-namespace:Checker.Converters">
<UserControl.Resources>
<models:BoardModel x:Key="boardModel"/>
<converters:BoolToBorderColorConverter x:Key="boolToBorderColorConverter"/>
<DataTemplate DataType="{x:Type models:Figure}">
<usercontrols:FigureControl/>
</DataTemplate>
</UserControl.Resources>
<Border>
<ItemsControl ItemsSource="{Binding Source={StaticResource boardModel}, Path=BoardItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}" MouseDown="ItemsControl_MouseDown">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Path='IsFirstColor', Converter={StaticResource boolToBorderColorConverter}}" BorderBrush="Black" BorderThickness="1" Width="50" Height="50" MouseDown="ItemsControl_MouseDown">
<ContentPresenter Content="{Binding FigureOnBoard}">
</ContentPresenter>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</UserControl>
希望这可以帮助
随机的想法可能有所帮助:
不是真的详细的如何 - 但这就是我如何解决问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.