首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WPF画布上的给定点居中显示文本

在WPF画布上的给定点居中显示文本
EN

Stack Overflow用户
提问于 2012-03-20 05:32:50
回答 4查看 16K关注 0票数 18

我有一个上面有几个形状的Controls.Canvas,想要添加以给定点为中心的文本标签(我正在绘制一个带有标签顶点的树)。在WPF中以编程方式完成此操作的最简单方法是什么?

我尝试过设置RenderTransform和调用Controls.Canvas.SetLeft等,但都没有将标签放在我想要的位置。WPF似乎只支持在给定的左、右、上、下坐标上定位,而不是在给定的坐标上居中,并且在构造Canvas时,Width属性为NaNActualWidth属性为0.0

EN

Stack Overflow用户

发布于 2018-12-23 08:33:16

要使文本在给定区域(比如矩形)居中,您可以简单地使用Grid对其进行换行。请参见this answer中的示例。可以使用LeftTopWidthHeight属性将网格放置在画布内的任何位置。文本将始终位于网格的中心。

此逻辑可以封装在自定义FrameworkElement like this中。

要使文本在(x, y)点居中,您可以计算相应的矩形:

代码语言:javascript
运行
复制
var text = new CenteredTextBlock
{
    Text = "Hello",
    Width = maxWidth,
    Height = maxHeight,
};
Canvas.SetLeft(text, x - maxWidth / 2);
Canvas.SetTop(text, y - maxHeight / 2);
Canvas.Children.Add(text);

其中,(maxWidth, maxHeight)是允许的最大文本大小。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9778294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档