Использовать принтерно-растровый вид и компоненты для отображения карты средствами Qt.
19.01.2017 14:44:57
Использовать принтерно-растровый вид и компоненты для отображения карты средствами Qt.
|
|
|
|
30.05.2017 17:05:35
Дошли руки задать вопрос, который давно интересует.
При скроле карты подрисовываю только новые участки карты. То есть, если листаем карту из нижнего правого угла в верхний левый, то основную часть изображения не меняя переношу в левый верхний угол, а справа и снизу подрисовываю 2 прямоугольника шириной и высотой в соответствий с тем на сколько передивинули карту. Всё прекрасно подрисовывается, когда делаю это так:
Однако картина меняется, когда хочется рисовать эти 2 прямоугольника одновременно в разных потоках. В этом случае приходится делать так:
Вертикальные линии в нижней четверти "дрожат" после скрола. То есть, подрисованные прямоугольники как будто на 1 пиксель "съезжают" вправо или влево относительно остального изобрадения. Может ли это быть из-за того, что координаты карты из пикселей переводятся в метры и из-за этого получается такая погрешность? Как это можно исправить? Использую только MAPAPI. Astra Linux 1.5. Такая проблема проявляется как в экранном, так и в принтерном типах отображения. В версии 12.0.2 то же самое.
Изменено: |
|||||||
|
|
01.06.2017 09:38:03
Возможно, что проблема в логике склеивания изображения?
Не могли бы вы предоставить тестовый пример, демонстрирующий некорректное поведение? |
|
|
|
01.06.2017 10:35:53
Логика склеивания изображения в обоих случаях одинаковая. Разница лишь в этой функции:
Больше в коде отличий нет. Заметил, что при активной директиве USE_THREADS "дрожат" только вертикальные линии при подрисовке, с горизонтальными всегда всё в порядке. Без активной директивы USE_THREADS всегда всё норм.
Изменено: |
|||||
|
|
05.06.2017 14:54:31
Упростил пример, чтобы проверять отдельно рисование.
Оставил использование openmp, чтобы попробовать В таком виде отрисовал карту Ногинск. По рамке искажений нет. Опять же, желательно не выделять на каждое рисование hPaint, потому что это дополнительное время на выделение/освобождение внутренних буферов.
|
||||
|
|
|||
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |