WPF如何绘制这种方式

时间:2016-04-02 15:27:20

标签: c# wpf wpf-controls

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

2 个答案:

答案 0 :(得分:1)

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

如何衡量文字的大小之前已经回答过:https://stackoverflow.com/a/9266288/572760

修改

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

一种方法是在画布上添加这样的东西。

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

答案 1 :(得分:1)

你试过吗?即使没有尝试合作也很难提供帮助。

如果您真的不知道从哪里开始,我建议使用除了语音气泡之外的所有图像,并使用Canvas with Ellipse使用绑定​​绘制椭圆作为上述建议。