我想知道是否有人可以指出我正确的方向。我想为Windows商店创建一个基本的纸牌游戏应用程序。我已经完成了多个应用程序,我对XAML网格和在单元格中放置图像非常熟悉。在纸牌游戏中,我将拥有与微软的Hearts游戏非常相似的设置(卡片位于底部,卡片相互重叠)。我的问题是我不知道如何使网格单元格中的图像相互重叠。有谁知道如何实现这一目标?感谢。
顺便说一句,如果解决方案需要代码,我知道VB.Net和C#。答案 0 :(得分:1)
您要找的是Grid.RowSpan
和Grid.ColumnSpan
。
例如:
考虑一个3x3 Grid
(用X
表示的空单元格):
X X X
X X X
X X X
现在考虑使用Grid.Row=0
和Grid.Column=1
的元素。它将被渲染(O
是一个填充的单元格。)
X O X
X X X
X X X
现在,如果我们增加该元素的RowSpan
和ColumnSpan
,但保持其Row
和Column
位置相同,我们正在创建一个更大的框,其顶部为将细胞留在同一位置。考虑Grid.RowSpan=2
和Grid.ColumnSpan=2
。
X O O
X O O
X X X
“框”锚定在1,0
(x,y或列,行)位置,但延伸到下一个单元格,形成一个2x2子网格。
现在,考虑第二个元素Y
。如果我们要使用上一张图并使用Y
添加Grid.Row=1, Grid.Column=0, Grid.RowSpan=2, Grid.ColumnSpan=3
,那么我们会得到:
X O O
Y Y Y
Y Y Y
请记住,Canvas是一个“堆栈”,因为最后绘制的对象位于顶部。
您可以使用此方法重叠网格中的不同元素。最后一个例子,因为它将更好地说明您可能正在寻找的卡重叠概念。
O :=
{
Grid.Row=0,
Grid.Column=0,
Grid.RowSpan=2,
Grid.ColumnSpan=2
}
Y :=
{
Grid.Row=1,
Grid.Column=1,
Grid.RowSpan=2,
Grid.ColumnSpan=2
}
首先绘制O,然后Y结果
O O X
O Y Y
X Y Y
首先绘制Y,然后O结果
O O X
O O Y
X Y Y
我相信你也可以手动修改Canvas.ZIndex,正如@ChrisShao所说。