Russian Qt Forum
Ноябрь 01, 2024, 08:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование  (Прочитано 4452 раз)
deaks
Гость
« : Апрель 26, 2011, 10:51 »

Добрый день!

с помощью QGraphicsLineItem рисую график осциллографа во времени(то есть с каждым шагом к старым значениям добавляется новое). при этом мне необходимо этот динамический график вращать и сдвигать.
сейчас я все это делаю, путем пересчет всех предыдущих значений графика для определенного угла и смещения, что совсем неправильно.

или как-то объединять объекты в группу, чтобы для них всех вместе делать ->setRotate() как для обычного итема.
как лучше сделать?
« Последнее редактирование: Апрель 26, 2011, 10:53 от deaks » Записан
madRoger
Гость
« Ответ #1 : Апрель 26, 2011, 11:03 »

Посмотрите на QGraphicsItemGroup.
А вообще для работы с графиками есть библиотека qwt.
Записан
deaks
Гость
« Ответ #2 : Апрель 26, 2011, 11:09 »

про qwt знаю, но в данном случае он не подходит
Записан
deaks
Гость
« Ответ #3 : Апрель 26, 2011, 11:18 »

с QGraphicsItemGroup хорошая идея, только вот как быть, если я отрисовал 10 отрезков графика, добавил их в группу. а потом ее повернул и сдвинул. то как потом к этому добавлять 11ый отрезок?мне ведь надо чтобы график непрерывно вращался и при этом он "рос" со временем

может есть возможность рисовать в определенной области с локальными координатами, а потом эту область вращать и сдвигать в глобальной?
Записан
madRoger
Гость
« Ответ #4 : Апрель 26, 2011, 12:30 »

Цитировать
может есть возможность рисовать в определенной области с локальными координатами, а потом эту область вращать и сдвигать в глобальной?

Для ентого есть куча методов для преобразования координат: mapTo.... mapFrom....
Записан
deaks
Гость
« Ответ #5 : Апрель 26, 2011, 13:40 »

так у меня сейчас все эти объекты принадлежат одной сцене. то есть несколько графиков в одной сцене.
а как вы подразумеваете?
Записан
madRoger
Гость
« Ответ #6 : Апрель 26, 2011, 13:48 »

Я поэкспериментировал с итемами. Подергал преобразования координат. Я вообще раньше с ними не работал. Посмотрите на этот код, может натолкнет на какие-нить мысли:
Код:
sc = new QGraphicsScene(this);
  ui->graphicsView->setScene(sc);
  ui->graphicsView->setSceneRect(0,0,300,300);

  QGraphicsLineItem *li = new QGraphicsLineItem(1,1,100,100);
  li->setPen(QPen(Qt::black));
  QGraphicsLineItem *li2 = new QGraphicsLineItem(100,10,20,200);
  li2->setPen(QPen(Qt::black));
  QGraphicsItemGroup *ig = new QGraphicsItemGroup;
  ig->addToGroup(li);
  ig->addToGroup(li2);

  sc->addItem(ig);

  ig->moveBy(100,100);
  ig->rotate(10);

  QPointF p1,p2;

  p1 = ig->mapToScene(ig->mapFromItem(ig,QPointF(1,100)));
  p2 = ig->mapToScene(ig->mapFromItem(ig,QPointF(200,100)));

  QGraphicsLineItem *li3 = new QGraphicsLineItem(p1.x(),p1.y(),p2.x(),p2.y());

  li3->setPen(QPen(Qt::black));
  ig->addToGroup(li3);

Или я все не так понял...

UPD: вместо:
Код:
p1 = ig->mapToScene(ig->mapFromItem(ig,QPointF(1,100))); 
p2 = ig->mapToScene(ig->mapFromItem(ig,QPointF(200,100)));

можно проще:
Код:
 p1 = ig->mapToScene(QPointF(1,100));
 p2 = ig->mapToScene(QPointF(200,100));
« Последнее редактирование: Апрель 26, 2011, 14:08 от madRoger » Записан
deaks
Гость
« Ответ #7 : Апрель 26, 2011, 14:23 »

Или я все не так понял...

вы правильно поняли меня)) огромное вам спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.