我有一个相当简单的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的内部工作,但是相对错误似乎指向了浮点数的转换.