QGraphicsScene координаты |
Здравствуйте, гость ( Вход | Регистрация )
QGraphicsScene координаты |
rp80 |
10.9.2011, 13:07
Сообщение
#1
|
Студент Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: 0 |
Два нубских вопроса. Сильно не бейте.
1. Как ограничить область рисования(по идее setSceneRect, но он ожидаемым образом не работает) 2. Как зафиксировать 0,0 в центре видимой области graphicsView. вот код:
Ожидается: 0,0 в центре видимой части gView, область отрисовки квадрат со стороной 400 и красным фоном. Линия выходит из центра и обрезается на 200 пикселях справа. В итоге имеем: точка 0,0 находится в правом нижнем углу видимой области graphView (288 пикселей от левого края, 87 от правого. 255 от верхнего, 55 от нижнего ), линия длиной все 800 пикселей, выходит за пределы видимой части view (можно увидеть меняя размер исходного окна). |
|
|
RazrFalcon |
10.9.2011, 13:14
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
rp80 |
10.9.2011, 13:19
Сообщение
#3
|
Студент Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Litkevich Yuriy |
10.9.2011, 21:31
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
rp80 |
10.9.2011, 23:21
Сообщение
#5
|
Студент Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: 0 |
Т.к. сцена всегда, автоматически увеличивает свой размер, чтобы поместилось всё. Но никогда автоматически не уменьшает свой размер Зачем тогда нужен метод setSceneRect? Как он работает не могу понять. Вот три примера: 1.
В этом случае у graphicsView появляются длинные скроллы и линия начинается не из левого верхнего угла graphicsView (как вообще ожидалось) а из точки в районе 80,200 в координатах graphicsView 2.
В этом случае у graphicsView скроллов нет и линия не видна совсем. 3.
В этом случае линия начинается где надо, но у graphicsView скроллы. Ну а нужно соответственно чтобы и объекты располагались нормально относительно внешних координат и чтобы не было ненужных скроллов. |
|
|
Litkevich Yuriy |
11.9.2011, 8:21
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Когда рисуешь на сцене, нужно использовать координаты сцены, т.е. вместо
QLineF(mgw->mapToScene(0,0),mgw->mapToScene(100,0)) должно быть: QLineF(QPoint(0,0), QPoint(100,0)) |
|
|
rp80 |
11.9.2011, 10:13
Сообщение
#7
|
Студент Группа: Участник Сообщений: 36 Регистрация: 10.9.2011 Пользователь №: 2860 Спасибо сказали: 0 раз(а) Репутация: 0 |
Когда рисуешь на сцене, нужно использовать координаты сцены, т.е. вместо QLineF(mgw->mapToScene(0,0),mgw->mapToScene(100,0)) должно быть: QLineF(QPoint(0,0), QPoint(100,0)) Так я и рисую в координатах схемы. Перевожу точку 0,0 (верхний левый угол graphicsView) в координаты схемы и рисую из неё. |
|
|
Litkevich Yuriy |
12.9.2011, 17:19
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Так я и рисую в координатах схемы. нет. чтобы рисовать в координатах схемы нужно в её координатах и рисовать.scene.addLine(QLineF(...), axisPen); В этом коде нет никакого упоминания о представлении, сцена и только она. Поэтому посторонние объекты и не должны фигурировать. А представление настрой так, чтобы оно отображало нужный кусок сцены. То что ты делаешь напоминает езду на велосипеде попой вперёд |
|
|
Текстовая версия | Сейчас: 19.4.2024, 2:14 |