gpt4 book ai didi

java - 如何使用apache poi获取子图形的绝对位置

转载 作者:行者123 更新时间:2023-12-02 00:05:27 27 4
gpt4 key购买 nike

这是一个带有子形状的 groupShape:

<p:nvgrpsppr> 
<p:cnvpr name="Group 256" id="260" />
<p:cnvgrpsppr>
<a:grpsplocks nochangeaspect="1" />
</p:cnvgrpsppr>
<p:nvpr />
</p:nvgrpsppr>
<p:grpsppr bwmode="auto">
<a:xfrm>
<a:off y="1940518" x="2952779" />
<a:ext cy="2209679" cx="1219680" />
<a:choff y="1052" x="1972" />
<a:chext cy="1116" cx="616" />
</a:xfrm>
<a:solidfill>
<a:srgbclr val="F7B63E" />
</a:solidfill>
</p:grpsppr>
<p:sp>
<p:nvsppr>
<p:cnvpr name="Freeform 257" id="262" />
<p:cnvsppr>
<a:splocks noeditpoints="1" />
</p:cnvsppr>
<p:nvpr />
</p:nvsppr>
<p:sppr bwmode="auto">
<a:xfrm>
<a:off y="1160" x="2161" />
<a:ext cy="287" cx="288" />
</a:xfrm>
</p:sppr>
</p:sp>

当我取消分组时,得到这个:

  <p:grpsppr> 
<a:xfrm>
<a:off y="0" x="0" />
<a:ext cy="0" cx="0" />
<a:choff y="0" x="0" />
<a:chext cy="0" cx="0" />
</a:xfrm>
</p:grpsppr>
<p:sp>
<p:nvsppr>
<p:cnvpr name="Freeform 257" id="262" />
<p:cnvsppr>
<a:splocks noeditpoints="1" />
</p:cnvsppr>
<p:nvpr />
</p:nvsppr>
<p:sppr bwmode="auto">
<a:xfrm>
<a:off y="2154358" x="3326999" />
<a:ext cy="568260" cx="570240" />
</a:xfrm>
</p:sppr>
</p:sp>

转换为绝对定位的childShape。

<a:xfrm> 
<a:off y="1160" x="2161" />
<a:ext cy="287" cx="288" />
</a:xfrm>

converted to:

<a:xfrm>
<a:off y="2154358" x="3326999" />
<a:ext cy="568260" cx="570240" />
</a:xfrm>

我是通过计算算出长宽的。

width = (group a:ext:cx)/(group a:chExt:cx) * (child a:ext:x>);

高度=(组a:ext:cy)/(组a:chExt:cy)*( child a:ext:y);

但是我试了很多种操作,都不知道怎么转换x坐标和y坐标。

y:1160 到 y:2154358 需要传递什么操作

请给我一些建议。

最佳答案

在你的组 XML

<a:off y="1940518" x="2952779" /> 
<a:ext cy="2209679" cx="1219680" />

表示:该组从 y 1940518、x 2952779 开始,高度为 2209679,宽度为 1219680。

<a:choff y="1052" x="1972" /> 
<a:chext cy="1116" cx="616" />

表示:该组的子部分从 y 1052、x 1972 开始,高度为 1116,宽度为 616。这是形状的原始值分组时。

这表明您的组形状已严重缩放。它很小,然后用 1980 倍缩放。

scale_factor_y = ext_cy / chext_cy 
= 2209679 / 1116
≈ 1980

scale_factor_x = ext_cx / chext_cx
= 1219680 / 616
= 1980

给小组中的 child

 <a:off y="1160" x="2161" /> 
<a:ext cy="287" cx="288" />

表示:未缩放的偏移量是y 1160,x 2161。未缩放的范围是高287,宽288。

如果未分组,缩放后的偏移量为:

off_y = (not_scaled_off_y - choff_y) * scale_factor_y + group_off_y
= (1160 - 1052) * 1980 + 1940518
= 2154358

off_x = (not_scaled_off_x - choff_x) * scale_factor_x + group_off_x
= (2161 - 1972) * 1980 + 2952779
= 3326999

缩放范围是:

ext_cy = not_scaled_ext_cy * scale_factor_y
= 287 * 1980
= 568260

ext_cx = not_scaled_ext_cx * scale_factor_x
= 288 * 1980
= 570240

这导致你的

<a:off y="2154358" x="3326999" /> 
<a:ext cy="568260" cx="570240" />

对于组外的 child ,现在与组之前的比例大小相同。

关于java - 如何使用apache poi获取子图形的绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60770606/

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