【问题标题】:How do I calculate the rendered location of the corners of a textblock?如何计算文本块角落的渲染位置?
【发布时间】:2016-03-22 16:37:57
【问题描述】:

我正在尝试获取文本块角落的渲染位置。我似乎不知道该怎么做。文本块由边框绑定,而边框又由网格绑定。因此,文本块和边框没有我可以相对于窗口的其余部分拉取的尺寸。我尝试了以下代码,但只有一部分有效。边距为 0,ActualWidth 为 13.2。到达这一行时,窗口和文本块已被渲染。

double rightBound = textBlock.Margin.Left + textBlock.ActualWidth;

更新: 我有以下代码,主要是我想要的。但是,这些点不能很好地与 UI 元素对齐;它们似乎被任意放置在元素附近。这些点不与块的边界对齐。

Point blockPoint = textBlock.TranslatePoint(new Point(0, 0), myMainWindow);

【问题讨论】:

  • 那条线在哪个方法中?此时窗口实际绘制了吗?
  • 窗口和文本块已经被渲染了。
  • 您可以使用TranslatePoint 方法获取相对于任何其他元素的位置。
  • 能否请您说明如何使用 TranslatePoint?文档不清楚,我的代码似乎找不到参考。
  • 如果您提供更多关于如何绘制该点以及预期结果的详细信息(屏幕截图?),您的问题将得到更快解决。

标签: c# wpf xaml


【解决方案1】:

所以您的文本框没有尺寸并且被边框封装...您上面给出的代码可能会抓取边框内文本的位置,因此看起来就像在元素内随机绘制线条一样。尝试抓住封装边框的位置。

【讨论】:

  • 我的猜测是,因为您的文本框在创建时没有调整大小,所以每次更改文本时,文本框而不是边框​​都会调整大小。这意味着该点位于边界内的某处(就像您描述的那样)。
猜你喜欢
  • 2019-04-15
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多