Название: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent)[РЕШЕНО] Отправлено: JayFOX от Февраль 22, 2010, 13:43 Здравствуйте. Надо рисовать кистью как во всех графических редакторах. Решил сделать так
Код: void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent) Отправлено: lit-uriy от Февраль 22, 2010, 13:59 а ты попробуй использовать предыдущие координаты, а то ты только текущие используешь.
QGraphicsSceneMouseEvent::lastScenePos() Цитировать кружки перестают быть непрерывной линией Может стоит рисовать сразу линией?Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent) Отправлено: JayFOX от Февраль 22, 2010, 14:03 Не помогло.
Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent) Отправлено: ufna от Февраль 22, 2010, 14:11 ну вообще я бы сказал что подход не правильный, если нужна н/п линия. По сути, ты должен соединять точку предыдущую и текущую линией, нарисованной за счет "дубляжа" этих эллипсов с минимально зримой частотой, что сводится к другой проблеме - как правильно быстро отрисовать такую линию между этими двумя точками, ведь по сути "дублировать" ничего не надо.
Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent) Отправлено: JayFOX от Февраль 22, 2010, 14:20 Спасибо! Идеально!
Код: QGraphicsLineItem*l = new QGraphicsLineItem(event->lastScenePos().x(),event->lastScenePos().y(),event->scenePos().x(),event->scenePos().y(),0,this); Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent)[РЕШЕНО] Отправлено: break от Февраль 22, 2010, 22:37 Сори что не совсем по теме - а вот проблема НЕЧАСТЫХ событий от мыши действительно существует - у меня есть OpenGL приложение где потребовалось сделать управление камерой через мышь - сначало оно было на клавиатуре W,A,S,D(движение) и клавиши курсора(направление взгляда). Захотелось сдублировать управление камерой на мышь
1) проблема - отсутствие относительного перемещения мышки - и это действительно не гуд т.к. старые координаты не удобно использовать при круговой вращении без остановки - курсор упирается в край экрана и все - пришлось отдельно обрабатывать, перемещать на другуб противоположную половину курсор и т.д. Гораздо проще и удобнее было бы получать от мыши относительное перемещение... 2) проблема - как только все реализовал вроде заработало - но при движении жуткие тормоза когда мышкой вертишшь камеру, если стоять на месте то тормозов нет. Стал копать - выяснил, что при периодической генерации событий от клавиатуры (клавиша зажата и удерживается) - от мыши события приходят в 2 а то и в 3 раза медленнее - это вообще не гуд - косяк прям какой-то. Пользоваться сторонними библиотеками для захвата клавы и мышки сожно - но не хочется с учетом наличия MouseEvent и Keypressed/ReleasedEvent в QWidget Сталкивался ли кто-нибудь??? Особенно проблема 2 интересует! Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent)[РЕШЕНО] Отправлено: Igors от Февраль 22, 2010, 23:27 JayFOX, приммите мои извинения за оффтоп
Сталкивался ли кто-нибудь??? Особенно проблема 2 интересует! Я делал такой плагин: показываю окно, в нем кнопка "Record". Пользователь выбирает одно из др. окон, выбирает примитив - запись началась, "Record" мигает. Не отпуская кнопку мыши, пользователь тянет примитив куда надо, обратно и.т.п. Все это время я снимаю время и координаты мыша, перевожу их в 3D координаты (в зависимости от окна где происходит драг). Как только пользователь отпустил кнопку мыша - все, запись закончилась, можно ее сохранить и/или начать по новой. Результат интерполируется и записывается по кадрам (обычно 25/30 кадров в секунду).Анализ результатов. Проблем с задержками/залипанием нет (делалось еще на G4 733 Mhz). Но масса проблем с "рукой", особенно когда движение медленное (дрожание, прыжки и.т.п). То, что нужна пост-обработка, фильтры и.т.п. - это точно. Ручной ввод надо рассматривать как создание "сырых" базовых/исходных данных, которые потом надо парить в редакторе - тогда все на своем месте. Название: Re: QGraphicsScene - рисуем (Проблема частоты mouseMoveEvent)[РЕШЕНО] Отправлено: SABROG от Февраль 22, 2010, 23:40 Построение Кривой-Безье (http://www.antigrain.com/research/bezier_interpolation/index.html) по нескольким точкам могло бы дать плавные линии.
(http://www.antigrain.com/research/bezier_interpolation/spline_polygon1.gif)(http://www.antigrain.com/research/bezier_interpolation/spline_polygon2.gif) |