创建六边形网格

Mau*_*tro 13 wpf xaml listview hexagonal-tiles

我必须像这样做一个"网格":

谐波表 谐波表

我正在尝试创建一个ListView带有ItemsSource="List<Note>"列表中每个奇怪音符移动到底部的...

ListView正确的控制?

如何绘制具有靠近下一个物体的面的精确六边形?

编辑:六角形图解决了...这是xaml:

<Path d:LayoutOverrides="None" 
      d:LastTangent="0,0" Stroke="Blue" Fill="Red" 
      HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
      Margin="0" Width="100" Height="100" x:Name="Path" 
  Stretch="Fill" 
      Data="M8.660254,0 L17.320508,5 17.320508,15 8.660254,20 0,15 0,5 8.660254,0 z"/>
Run Code Online (Sandbox Code Playgroud)

Mar*_*art 7

如果您需要选择项目,您的笔记容器将是一个ItemsControl或一个ListBox.然后使用ListBox.ItemTemplate包含六边形图的位置为项目提供模板.你有一个很好的自定义列表框布局教程.

此时,您的六边形将一个在另一个下方显示,默认情况下为ListBox.要获得特殊布局,您必须更改ListBox.ItemPanel.这里有两种可能性:

  • 要么使用Canvas支持绝对定位的面板.在这种情况下,您的商品必须具有X和Y属性,您将使用这些属性来定位它们.
  • 或者你创建一个自定义Panel,可能是基于Canvas,能够将你的自定义坐标系(例如音符名称+八度数字)转换为X和Y.有点困难,但更可重复使用.CodeProject上自定义面板示例.