【问题标题】:Return relative position on Canvas返回 Canvas 上的相对位置
【发布时间】:2013-09-02 19:02:02
【问题描述】:

我正在开发面向平板电脑和 PC 的 Windows 应用商店应用。

在我的应用程序中,我使用 SetLeft 和 SetTop 通过代码将对象添加到 Canvas。但是,此方法不会返回不同分辨率的相对位置,并且对象最终位于错误的位置。

此外,尝试返回 Canvas 宽度会返回 NaN。如果我能得到这个,那么我就可以计算出一个相对位置。

有没有办法将点转换为相对点?

【问题讨论】:

  • 你能添加一些精简代码来演示这个问题吗?
  • 我有一个画布,在该画布上我允许用户用手指绘图。他们指定的路径与要收集的一堆星星对齐。星星使用 Star star = new Star(new Point(212, 707)) - (稍后通过 XML 完成)添加到画布中,并且位于 Surface RT 的正确位置。但是在 PC 上,在不同的分辨率下,星星出现在错误的位置。是否可以使用 Canvas 的百分比?或者有没有我可以使用的相对点。干杯,克里斯

标签: c# xaml canvas windows-8 microsoft-metro


【解决方案1】:

此外,尝试返回 Canvas 宽度会返回 NaN。如果我能得到这个,那么我就可以计算出一个相对位置。

您应该能够使用Canvas.ActualWidthCanvas.ActualHeight 在运行时获取实际宽度和高度。

【讨论】:

  • 谢谢你这样做。我之前尝试过 ActualWidth 和 ActualHeight,但只返回 0。但读取'默认值为 0。如果对象尚未加载并经过布局传递,则可能会遇到默认值。清除它。
  • @ChrisCook 是的 - ActualWidth 在布局发生后设置 - 所以当容器实际呈现对象时,它会为您设置。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多