Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ График. Помощь.

Автор: denmor86 7.6.2011, 10:10

Появилась необходимость сделать динамический график. Появились вопросы:
1) На чём лучше рисовать? QPixmap?
2) Как сделать максимальное быстродействие?

Использовать QWT пробовал, но вся мощь библиотеки не нужна, соответственно затраты на изучение её не соизмеримы с задачей.

Автор: RazrFalcon 7.6.2011, 13:11

Вот. Когда то делал нечто подобное. Может пригодится.

 plot.zip ( 2.71 килобайт ) : 140
 

Автор: denmor86 7.6.2011, 13:36

Спасибо, огромное, думаю это то что мне нужно.

Автор: denmor86 7.6.2011, 14:29

появился вопрос:
scene->addLine эта функция добавляет на сцену объект типа QGraphicsItem
Соответственно, чтобы добавлять на сцену большое кол-во объектов то их нужно и хранить в памяти...
У меня различных объектов может быть за раз более 1000-10000 штук.
Вопрос: нельзя ли их как то рисовать и удалять из памяти?

Всё разобрался. Спасибо!

Автор: RazrFalcon 7.6.2011, 14:37

И какое же решение? :)

addLine не особо много памяти жрет, по крайней мере у меня.
Можно рисовать на QPixmap, но представьте каких он должен быть размеров, и сколько это будет хавать.

Автор: denmor86 7.6.2011, 15:24

Я перепутал addLine с addItem. Памяти действительно не много ест. QPixmap не вариант уже понял.
Ещё раз спасибо вам огромное.

Автор: Fitz 7.6.2011, 15:27

тут темка как-то была про плоттер -> http://www.forum.crossplatform.ru/index.php?showtopic=2307&hl=%E3%F0%E0%F4%E8%EA%E8
можно на его основе сделать, пример по-моему универсальный

Автор: denmor86 7.6.2011, 15:54

Да, я видел этот пример, там большая беда с быстродействием.

Автор: denmor86 7.6.2011, 16:42

Появился ещё вопрос. Может кто решал его...
Нужно добавить текст в нужное место.

scene->addText(str);

эта функция пишет текст в позицию (0,0)

Есть другой метод:
QGraphicsTextItem *textItem = new QGraphicsTextItem(str, 0, 0);;
textItem->setPos(10,10);
scene->addItem(textItem);

Но тут беда с использованием и освобождением памяти, так как после удаления памяти пропадает текст и со сцены.

Есть ли ещё какой то способ разместить текст в нужном месте сцены?

Автор: Litkevich Yuriy 7.6.2011, 17:02

Цитата(denmor86 @ 7.6.2011, 17:29) *
Соответственно, чтобы добавлять на сцену большое кол-во объектов то их нужно и хранить в памяти...
У меня различных объектов может быть за раз более 1000-10000 штук.
Вопрос: нельзя ли их как то рисовать и удалять из памяти?
Если нарисованные объекты тебе больше нуе нужны (как в MS Paint) и нужна скрость - пригоден только QPainter, а графическое представление не пригодно - слишком медленно.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)