C# WPF文本块重叠椭圆
我试图在WPF中创建它(我意识到我可以只使用一个图像,但我正在尝试学习WPF): () 这是我到目前为止所做的,但它没有产生预期的结果,因为文本框似乎完全隐藏了椭圆,而它应该只是有一个透明的背景:C# WPF文本块重叠椭圆,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我试图在WPF中创建它(我意识到我可以只使用一个图像,但我正在尝试学习WPF): () 这是我到目前为止所做的,但它没有产生预期的结果,因为文本框似乎完全隐藏了椭圆,而它应该只是有一个透明的背景: <StackPanel> <TextBlock HorizontalAlignment="Left" Margin="144,207,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
<StackPanel>
<TextBlock HorizontalAlignment="Left" Margin="144,207,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>
<Ellipse HorizontalAlignment="Left" Height="52" Margin="142,189,0,0" Stroke="Black" VerticalAlignment="Top" Width="52"/>
</StackPanel>
您可以将这样的东西放在一个视图框中,以使缩放更容易,类似这样的东西。您需要移除堆栈面板,它将一个项目堆叠在另一个项目之上,而这不是您在这里想要的。在这种情况下,我使用了网格
<Viewbox Width="100" Height="100">
<Grid Width="20" Height="20">
<Ellipse Stroke="Black"/>
<TextBlock HorizontalAlignment="Center" Text="i" TextAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Viewbox>
不要使用StackPanel进行此操作,它的目的是堆叠东西,而不是显示它们重叠,您使用的工具不正确。使用一个网格,它更适合你要做的事情 要获得透明背景,必须将TextBlock设置为透明,或设置空背景
Background={x:Null}
因此stackpanel会将第一个项目放在顶部,第二个项目就在其下方,第三个项目在第二个项目下方,依此类推。您可以使用画布或网格。与stackpanel一样,它们是“内容控件”,支持在其中放置多个对象,就像您使用stackpanel一样 因此,一个真正快速的方法是:
<Grid >
<Ellipse HorizontalAlignment="Left" Height="52" Stroke="Black" VerticalAlignment="Top" Width="52"/>
<TextBlock Text="i" FontSize="52" Margin="18,-13,-6,13" />
</Grid>
或者您可以使用unicode字符:ⓘ强> 代码0x24D8
<TextBlock Text="ⓘ" FontSize="52" />
您可以使用边框和文本块进行编辑。如果使方形边框的角半径等于其宽度(或高度)的一半,则方形边框将变为圆形:
我
很好,正是我想做的。这是一个有趣的答案。这在所有机器上都能用吗?这是一种特殊的字体还是我应该关注的东西?它是标准的Unicode,应该在所有机器上都能用(可以运行WPF),但你必须在使用特殊字体时进行测试。这与他问的问题无关,他想学习WPF(我想他是想弄清楚控件和布局)是的,我特别尝试重新构建它,以便学习WPF控件和布局;然而,这仍然是一个有趣的、最小的、可能更好的解决方案!单个char TextBlock也是WPF…这有一个很大的优势:无需指定(和匹配)高度和宽度。您可以添加边距,但FontSize充当SPOD。