Получение координат изображения из xml - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть XML-файл, который содержит это:

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

Это координаты изображения. В .Net я хочу показать это изображение с помощью C # в приложении wpf. Я делаю это с помощью класса 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 ]

1 голос
/ 10 ноября 2011

Вот еще один вопрос, связанный с этим. Как получить изображения из файла .pptx с помощью MS Open XML SDK? Может быть, вы можете использовать магические числа в этом вопросе для расчета. размер вашего изображения (что-то вроде cx / 12700)

0 голосов
/ 07 ноября 2011

Вам просто нужно масштабировать.Сначала найдите границу, нам просто нужно знать что такое , это cx, я полагаю, это центр размещения фигуры, поэтому просто соберите все координаты в обоих направлениях: это среднее cx+x,cy+y, cx-x,cy -y, и найдитеmin x, min y, max x / max y.Если у вас есть эта информация, вы можете рассчитать коэффициент масштабирования, погрузив ширину или высоту вашего изображения в соответствии с максимальным значением X или Y, которое вы рассчитали.Затем перед рисованием умножьте все координаты ypour на этот коэффициент.Вы должны рассчитать масштаб только за один X или Y, чтобы сохранить аспект изображения.

0 голосов
/ 07 ноября 2011

Вы можете преобразовать эти значения в пиксели, используя эти формулы, я думаю ...

Где VALUE - это значение, которое вы хотите преобразовать.Я думаю, что у Феличе Поллано, вероятно, есть правильный метод борьбы с этим после этого.Надеюсь, я правильно понимаю ваши потребности.

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

VALUE - это значение, указанное в XML.HorizontalPixels - это фактическая ширина изображения в пикселях, а HorizontalResolutionInDPI - это DPI изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...