gpt4 book ai didi

WPF PathGeometry - 界限错误?

转载 作者:行者123 更新时间:2023-12-02 14:10:20 25 4
gpt4 key购买 nike

我有一个相当简单的 PathGeometry:

M567764.539,5956314.087L567815.077,5956179.775L567821.625,5956182.314L567773.425,5956311.248L567858.513,5956349.923L567950.858,5956392.466L567949.039,5956399.843L567942.252,5956396.685L567873.018,5956364.467L567799.816,5956330.421L567771.226,5956317.186L567764.539,5956314.087

现在,当我查询此数据的 PathGeometry.Bounds 属性时,我得到以下边界:

567764.5625,5956180  567950.875,5956400

预期的界限是:

567764.539,5956179.775 567950.858,5956399.843

我的主要问题:边界小于几何图形,因此几何图形的某些部分可能位于边界之外。

我创建 PathGeometry 并显示边界,如下所示:

PathGeometry geo = PathGeometry.CreateFromGeometry(Geometry.Parse("M567764.539,5956314.087L567815.077,5956179.775L567821.625,5956182.314L567773.425,5956311.248L567858.513,5956349.923L567950.858,5956392.466L567949.039,5956399.843L567942.252,5956396.685L567873.018,5956364.467L567799.816,5956330.421L567771.226,5956317.186L567764.539,5956314.087"));
System.Diagnostics.Trace.WriteLine(geo.Bounds);

我做错了什么?
而且,更重要的是,如何获得 PathGeometry 的正确边界?

最佳答案

在某些时候,我认为 WPF 必须转换为单点进行渲染,并且我想知道 Bounds 的值是否基于渲染结果。在这种情况下,您可能会看到基于您使用的大量数字的精度限制。我注意到你的 Y 值比 X 值大 10 倍,巧合的是,误差也比 X 误差大 10 倍。

如果可以在创建 PathGeometry 之前减去最小 X 和 Y,我认为您会得到更好的数字。假设您正在显示 PathGeometry,您可以将其放置在 Canvas 中并将 Canvas.Left/Top 应用于您的值以在屏幕上获得正确的偏移量。为了获得正确的边界,您可以将顶部/左侧偏移添加到边界结果中。

只是提醒一下,这个答案中有一些猜测。我还没有研究过 Bounds 的内部工作原理,但相对误差似乎指向 float 的转换。

关于WPF PathGeometry - 界限错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com