C# WPF文本覆盖网格
我搜索了整个stackoverflow,找不到简单的解决方案 我有网格,我想用一些文本/图像覆盖整个网格。你知道我怎么做吗 实际上,这是一款俄罗斯方块游戏,我想在用户输后向他显示文本/图像“游戏结束”,所以我需要从c#手动完成。有什么想法吗 谢谢您的帮助:-)C# WPF文本覆盖网格,c#,wpf,xaml,C#,Wpf,Xaml,我搜索了整个stackoverflow,找不到简单的解决方案 我有网格,我想用一些文本/图像覆盖整个网格。你知道我怎么做吗 实际上,这是一款俄罗斯方块游戏,我想在用户输后向他显示文本/图像“游戏结束”,所以我需要从c#手动完成。有什么想法吗 谢谢您的帮助:-) /Fonts/fontawesome webfont.ttf#fontawesome 赖特 使用网格,您只需添加占据相同空间的对象,它们将按照添加顺序重叠。在您的示例中,您有很多列和行,因此要覆盖所有列和行,您必须将它的RowSpan
/Fonts/fontawesome webfont.ttf#fontawesome
赖特
使用网格,您只需添加占据相同空间的对象,它们将按照添加顺序重叠。在您的示例中,您有很多列和行,因此要覆盖所有列和行,您必须将它的RowSpan和ColumnSpan设置为您拥有的行/列数,以便它填充所有空间 一种更简单的方法可能是将网格放在另一个网格中(只有一行和一列),并在其中添加一些内容(这就是我在覆盖组件时所做的,只需将它们粘贴在它们自己的小1x1网格中) 像这样:
<Grid>
<Grid Name="MainGrid" Height="750" Width="375" DockPanel.Dock="Right">
... all those columns
</Grid>
<Border Name="GameOverlay" Background="Black" Visibility="Hidden">
<TextBlock Text="Game Over!" Foreground="White" FontWeight="Bold"
FontSize="24"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</Grid>
... 所有那些专栏
请注意,如果您想隐藏原始内容(尽管半透明的背景可能看起来很酷!),那么为某些内容设置背景非常重要
要在代码中显示和隐藏它,只需使用GameOverlay.Visibility=Visibility.Visibility
或GameOverlay.Visibility=Visibility.Hidden
显示和隐藏它,或将其绑定到您可以更改的属性
通过这种方式,您可以使它看起来像您想要的那样,将它放置在您想要的位置,并将其设置为在设计器中可见,然后将其更改为隐藏(以便您可以使其在代码中可见)
比在需要时用代码构建并手动将其添加到用户体验要容易得多。谢谢!你救了我一天,真的:-)我试过类似的东西,但我不知道为什么它不起作用。你的溶液很棒!没问题。您是否尝试将其添加到游戏网格,然后在代码中添加游戏元素?这将导致顺序混乱(它们是按照您添加它们的顺序绘制的)。可以使用Canvas.ZIndex强制绘制顺序。更容易,只要把它推到树上它自己的格子里就行了!此外,如果事情变化很快,通常更有效的方法是将事情隐藏起来,并在需要时显示出来。
<Grid>
<Grid Name="MainGrid" Height="750" Width="375" DockPanel.Dock="Right">
... all those columns
</Grid>
<Border Name="GameOverlay" Background="Black" Visibility="Hidden">
<TextBlock Text="Game Over!" Foreground="White" FontWeight="Bold"
FontSize="24"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</Grid>