Вставка изображений и фигур

В данной статье мы рассмотрим процесс вставки изображения в документ ACell и AText. Будет рассмотрено использование различных интерфейсов, таких как XDrawPagesSupplier, XDrawPages, XShapes, XShape и XTextContent, для работы с рисунками и формами. Вы узнаете, как получить доступ к нужным интерфейсам, создать форму для вставки изображения и управлять ее свойствами. Это позволит вам программно добавлять и настраивать изображения.


XShape

Интерфейс XShape представляет объекты, которые могут быть вставлены в документ. Он обеспечивает функциональность для работы с графическими элементами, такими как фигуры, изображения и другие объекты. С помощью интерфейса XShape можно управлять положением, размером, видимостью и другими атрибутами объектов. Он также предоставляет методы для добавления, удаления и изменения формы объектов.

Пример использования:

//Получаем объект документа

Reference<XTextDocument> xDoc(xComponent, UNO_QUERY_THROW);

//Получаем объект текста

Reference<XText> xText = xDoc->getText();

//Получаем XMultiServiceFactory для создания экземпляра объекта EllipseShape

Reference<XMultiServiceFactory> xServiceFactory(xDoc, UNO_QUERY_THROW);

//Создается EllipseShape и xShape для работы с этим объектом

Reference<XShape> xShape(xServiceFactory->createInstance("com.sun.star.drawing.EllipseShape"), UNO_QUERY_THROW);

...

Size size;

Point position;

size.Width = 10000;

size.Height = 10000;

position.X = 0.9 * (30000 - size.Width);

position.Y = 0.5 * (15000 - size.Width);

xShape->setSize(size);

xShape->setPosition(position);


Методы интерфейса  XShape:


  • getPosition() - позволяет получить  текущую позицию объекта.
Параметры:
-
Возвращаемое значение: com::sun::star::awt::Point
  • getSize() - позволяет получить размер объекта.
Параметры:
-
Возвращаемое значение: com::sun::star::awt::Size

  • setPosition(aPosition) - устанавливает позицию объекта.
Параметры:
  • com::sun::star::awt::Point aPosition -  положение верхнего левого края в 1/100 миллиметрах.
Возвращаемое значение: void

  • setSize(aSize) - устанавливает размер объекта.
Параметры:
  • com::sun::star::awt::Size aSize -  размер в 1/100 миллиметрах.
Возвращаемое значение: void

XShapes

XShapes позволяет получать доступ, добавлять и удалять формы в коллекции.

Пример использования:

//Получаем объект XDrawPages

Reference<XDrawPages> xDP = xSheetSupplier->getDrawPages();

Reference<XIndexAccess> xIA(xDP, UNO_QUERY_THROW);

//Получаем объект коллекции форм

Reference<XShapes> xShapes(xIA->getByIndex(0), UNO_QUERY_THROW);

...

 xShapes->add(xShape);

Методы интерфейса  XShapes:


  • add(xShape) - добавляет форму в коллекцию.
Параметры:
  • com::sun::star::drawing::XShape xShape - форма, которую необходимо добавить.
Возвращаемое значение: void

  • remove(xShape- удаляет форму из коллекции.
Параметры:
  • com::sun::star::drawing::XShape xShape - форма, которую необходимо удалить.
Возвращаемое значени: void

Интерфейсы для обеспечения доступа к графическим объектам в ACell


XDrawPagesSupplier


Интерфейс XDrawPagesSupplier предоставляет функциональность для получения коллекции страниц рисунков в документе.

Пример использования:

//Получаем объект XDrawPagesSupplier для обеспечения доступа к объекту рисунка

Reference<XDrawPagesSupplier>xSheetSupplier(xDoc, UNO_QUERY_THROW);

//Получаем объект XDrawPages

Reference<XDrawPages> xDP = xSheetSupplier->getDrawPages();



Методы интерфейса   XDrawPagesSupplier:


  • getDrawPages() - возвращает индексированный контейнер с объектом DrawPages.
Параметры:
-
Возвращаемое значение: com::sun::star::drawing::XDrawPages


XDrawPages


XDrawPages - интерфейс для работы с коллекцией страниц рисунков в документе.

Пример использования:

//Получаем объект XDrawPagesSupplier для обеспечения доступа к объекту рисунка

Reference<XDrawPagesSupplier>xSheetSupplier(xDoc, UNO_QUERY_THROW);

//Получаем объект XDrawPages

Reference<XDrawPages> xDP = xSheetSupplier->getDrawPages();

xDP->remove(0);

Методы интерфейса  XDrawPages:


  • insertNewByIndex(nIndex) - создает и вставляет объект DrawPage.
Параметры:

  • long nIndex - индекс вставляемого объекта DrawPage.

Возвращаемое значение: com::sun::star::drawing::XDrawPage

  • remove(xPage) - удаляет объект DrawPage из коллекции.
Параметры:

  • com::sun::star::drawing::XDrawPage xPage - удаляемый DrawPage объект.
Возвращаемое значение: void

Интерфейсы для создания и размещения графических объектов в AText


XTextContent


XTextContent обеспечивает возможность вставки различных объектов в текст в документе AText. Для вставки изображения или фигуры в документ AText следует  создать экземпляр нужного графического объекта с помощью метода createInstance() интерфейса XMultiServiceFactory, создать объект XTextContent, и вставить его с использованием метода insertTextContent() интерфейса XText.


Пример использования:

//Получаем объект документа
Reference<XTextDocument> xDoc(xComponent, UNO_QUERY_THROW);
//Получаем объект текста
Reference<XText> xText = xDoc->getText();
//Получаем объект XMultiServiceFactory для создания TextGraphicObject
Reference<XMultiServiceFactory> xServiceFactory(xDoc, UNO_QUERY_THROW);
//Получаем объект XTextContent для вставки в метод insertTextContent() интерфейса XText. И создаем экземпляр объекта TextGraphicObject
Reference<XTextContent> xTextContent(xServiceFactory->createInstance("com.sun.star.text.TextGraphicObject"), UNO_QUERY_THROW);
...
//Вставляем изображение
xText->insertTextContent(xText->getEnd(), xTextContent, true);



Ниже приведены примеры кода на C++ и C#, которые иллюстрируют использование интерфейсов XDrawPagesSupplier, XDrawPages, XShapes, XShape и XTextContent. В этих примерах производится добавление изображения и эллипса на страницу документа ACell и AText.
Прикреплённые файлы
add_image_and_ellipse_in_acell.cpp
404kb
add_image_and_ellipse_in_acell.cs
404kb
add_image_and_ellipse_in_atext.cpp
404kb
add_image_and_ellipse_in_atext.cs
404kb
for_linux.rar
404kb