9

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

在此处输入图像描述

来源

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

<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>
4

5 回答 5

21

您可以将这样的东西放在视图框中以使缩放更容易,就像这样。您需要移除堆叠面板,它将一个项目堆叠在另一个项目之上,这不是您想要的。在这种情况下,我使用了网格。

<Viewbox Width="100" Height="100">
    <Grid Width="20" Height="20">
        <Ellipse Stroke="Black"/>
        <TextBlock HorizontalAlignment="Center" Text="i" TextAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</Viewbox>

在此处输入图像描述

于 2013-07-31T12:52:17.833 回答
10
于 2013-07-31T13:04:28.890 回答
5

所以堆栈面板会将第一个项目放在顶部,第二个放在它下面,第三个放在第二个下面,依此类推。你可以做的是使用画布或网格。与堆栈面板一样,它们是“内容控件”并支持在其中放置多个对象,就像您对堆栈面板所做的那样。

所以一个非常快速的方法来做你想要完成的事情是:

<Grid >
        <Ellipse HorizontalAlignment="Left" Height="52"  Stroke="Black" VerticalAlignment="Top" Width="52"/>
        <TextBlock  Text="i" FontSize="52" Margin="18,-13,-6,13" />
</Grid>
于 2013-07-31T12:58:08.657 回答
2

不要为此使用 StackPanel,它的目的是堆叠事物,而不是显示它们重叠,您为此使用了错误的工具。使用网格,它更适合您想要做的事情。

要拥有透明背景,您必须将 TextBlock 的Background 属性设置为透明,或设置空背景。

Background={x:Null}
于 2013-07-31T12:52:39.510 回答
2

您可以使用边框和 TextBlock 来实现。如果您让其 CornerRadius 等于其宽度(或高度)的一半,方形边框将变为圆形:

        <Border Width="100" Height="100"  CornerRadius="50" BorderBrush="Black" BorderThickness="2">
            <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
                 FontSize="50"   Foreground="Blue"  >i</TextBlock>
        </Border>
于 2020-10-14T02:29:47.267 回答