Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF文本块重叠椭圆_C#_Wpf_Wpf Controls - Fatal编程技术网

C# 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"/>

我试图在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>

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

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