crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> svg item некорректно инициализируется
hemmul
  опции профиля:
сообщение 26.3.2012, 15:24
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 9.3.2012
Пользователь №: 3254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добавляю на QGraphicScene объекты boundingRect() которых


QRectF(257.5,457.5 176x304)
QRectF(374.5,388.5 191x161)
QRectF(258.5,226.5 213x125)
QRectF(165.023,103.023 160.954x72.9535)

Сохраняю объекты в SVG файл:
  QSvgGenerator gen;
    gen.setSize(QSize(MyScene->width(), MyScene->height()));
    gen.setViewBox(MyScene->sceneRect());
    gen.setFileName(fileName);
    QPainter pgen (&gen);
    for(int i = 0; i < MyScene->items().size(); i++)
     { qDebug() << MyScene->items()[i]->boundingRect();} // таким образом для отладки публикую внешние границы
    MyView->render(&pgen,MyScene->sceneRect(),
                   QRect(   MyScene->sceneRect().left(),  MyScene->sceneRect().top(),  MyScene->width(), MyScene->height()   )
                   );


Объекты сохраняются корректно. Проверил сверив координаты линии на сцене с сохраненными координатами в файле.

Дальше открываю файл, выдираю каждый элемент сохраняю его во временный файл, которым инициализирую QGraphicsSvgItem, и добавляю полученный элемент на сцену. Вот содержимое файлов которыми инициализируется QGraphicsSvgItem
ФАЙЛ 1.
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<polyline fill="none" points="167,105 324,174 " vector-effect="none"/>
</g>


ФАЙЛ 2.
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M260,228 L470,228 L470,350 L260,350 L260,228"/>
</g>

ФАЙЛ 3
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M564,469 C564,512.63 521.915,548 470,548 C418.085,548 376,512.63 376,469 C376,425.37 418.085,390 470,390 C521.915,390 564,425.37 564,469 "/>
</g>

ФАЙЛ 4
<g stroke-opacity="1" fill="none" font-family="MS Shell Dlg 2" stroke="#000000" stroke-linejoin="bevel" font-style="normal" stroke-linecap="square" font-weight="400" stroke-width="3" transform="matrix(1,0,0,1,-83,-42)" font-size="8.25">
<path fill-rule="evenodd" vector-effect="none" d="M259,459 L432,459 L432,760 L259,760 L259,459"/>


Собственно проблема:
В результате вижу что все элементы открытого файла сбились в кучу в начале координат сцены, их boundingRect() :

QRectF(0,0 161x73)
QRectF(0,0 213x125)
QRectF(0,0 191x161)
QRectF(0,0 176x304)

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
hemmul
  опции профиля:
сообщение 27.4.2012, 10:01
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 9.3.2012
Пользователь №: 3254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Данная тема была открыта при выполнении тестового задания в одну замечательную фирму, по результатам выполнения тестового задания и в ходе общения с программистами которые оценивали мою работу выяснилось что модуль QtSVG использовать не целесообразно, из за его общей кривизны. Максимум что целесообразно с помощью него можно делать - это использовать просмотр SVG картинок, для построения же полноценного редактора был использован модуль QtXml.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 19:01