[英]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.