WPF怎么画成这样

WPF how to draw this way

我必须让这段文字可以翻译。文本周围的圆圈应自动调整大小。例如:在英语中它可能是 Done - 4 个字母,在西班牙它可能是 7 个字母。

假设您有办法访问这个说话气泡对象,您只需将宽度和高度设置为您需要的宽度和高度,让文本适合它并添加适当的填充。

之前已经回答过如何测量文字的大小:

编辑:

因此,要进行实际绘图,您本质上需要一个椭圆和一些文本。

一种方法是在您的 canvas.

中添加类似这样的内容
<Canvas>
<Viewbox Name="viewbox" Width="100" Height="100">
    <Grid Name="grow" Width="100" Height="100">
        <Ellipse Fill="LightGray"  Stroke="Black"/>
        <TextBlock Name="ThatsWhatHeSaid" HorizontalAlignment="Center" FontSize="48" FontWeight="Bold" Foreground="LightSkyBlue"  Text="" TextAlignment="Center" VerticalAlignment="Center" />
    </Grid>
</Viewbox>

然后在你的代码隐藏中添加前面提到的MeasureString,并处理文本变化的情况。

ThatsWhatHeSaid.Text += "it grows larger";
Size mySize = MeasureString(ThatsWhatHeSaid.Text);
const int padding = 100;
grow.Width = mySize.Width + padding;
grow.Height = mySize.Height + padding;

viewbox.Width = grow.Width;
viewbox.Height = grow.Height;

你尝试过吗?不尝试使用就很难提供帮助。

如果您真的不知道从哪里开始,我建议对除对话泡泡之外的所有内容都使用图像,并使用 Canvas 和 Ellipse 使用绑定绘制椭圆形,如上述建议。