WPF TextBlock重叠椭圆

use*_*388 7 c# wpf wpf-controls

我试图在WPF中创建它(我意识到我可以使用图像,但我正在尝试学习WPF):

http://www.iconarchive.com/show/ios7-icons-by-visualpharm/info-icon.html

这是我到目前为止所得到的,但它并没有产生预期的结果,因为,文本框似乎完全隐藏了椭圆,而它应该只有一个透明的背景:

<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>
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 20

您可以将这样的内容放在视图框中,以便更轻松地进行缩放,就像这样.你需要删除堆栈面板,它会将项目叠加在另一个上面而不是你在这里之后.在这种情况下我使用了网格.

<Viewbox Width="100" Height="100">
    <Grid Width="20" Height="20">
        <Ellipse Stroke="Black"/>
        <TextBlock HorizontalAlignment="Center" Text="i" TextAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Hen*_*man 9

或者你可以使用unicode字符:

代码0x24D8

 <TextBlock Text="?" FontSize="52" />
Run Code Online (Sandbox Code Playgroud)


小智 5

因此,stackpanel会将第一个项目放在顶部,第二个项目放在它下面,第三个项目放在第二个项目之下,依此类推.你可以做的是使用Canvas或Grid.与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>
Run Code Online (Sandbox Code Playgroud)