从xml获取图像坐标

时间:2011-11-07 19:21:03

标签: c# xml image

我有一个.xml文件,其中包含:

<a:xfrm>
<a:off x="381000" y="152400"/>
<a:ext cx="2124075" cy="2162175"/>
</a:xfrm>

这些是图像的坐标。在.Net中,我想在wpf app中用C#显示该图像。我用BitmapImage类做​​到了这一点。显示图像,但其大小不正确。我能从上面的x,cx,y和cy的数字中找出坐标吗?

这是xml的一个重要部分:

<p:pic>
    <p:nvPicPr>
        <p:cNvPr id="1026" name="Picture 2" descr="C:\Users\John\Desktop\images.jpg"/>
        <p:cNvPicPr>
                    <a:picLocks noChangeAspect="1" noChangeArrowheads="1"/>
        </p:cNvPicPr>
    <p:nvPr/>
</p:nvPicPr>
<p:blipFill>
    <a:blip r:embed="rId2" cstate="print"/>
    <a:srcRect/>
    <a:stretch>
    <a:fillRect/>
    </a:stretch>
</p:blipFill>
<p:spPr bwMode="auto">
    <a:xfrm>
        <a:off x="381000" y="152400"/>
        <a:ext cx="2124075" cy="2162175"/>
    </a:xfrm>
    <a:prstGeom prst="rect">
    <a:avLst/>
    </a:prstGeom>
    <a:noFill/>
    </p:spPr>
</p:pic>

3 个答案:

答案 0 :(得分:1)

这是另一个与之相关的问题。 How can I retrieve images from a .pptx file using MS Open XML SDK? 也许你可以使用该问题中的幻数来计算。你的图像大小(类似于cx / 12700)

答案 1 :(得分:0)

您可以使用这些公式将这些值转换为像素,我认为......

VALUE是您要转换的值。我认为Felice Pollano可能有正确的方法来处理它。我希望我能正确理解你的需求。

horizontalPixels = (VALUE * horizontalResolutionInDPI) / 914400
verticalPixels = (VALUE * verticalResolutionInDPI) / 914400

VALUE是XML中提供的值。 horizo​​ntalPixels是图像的实际宽度(以像素为单位),horizo​​ntalResolutionInDPI是图像的DPI。

答案 2 :(得分:0)

你只需要扩展。首先找到边界,我们只需要知道是什么是cx,我想是形状放置的中心,所以只收集两个方向的所有坐标:这意味着cx+x,cy+y, cx-x,cy -y,并找到min x,min y,max x / max y。获得此信息后,您可以通过根据计算的X或Y最大值跳过图像大小的宽度或高度来计算缩放系数。然后在绘制之前将所有ypour坐标乘以该因子。您应该选择仅在一个X或Y中计算比例以保持图像方面。