На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Артефакты при рисовании карт из разных потоков

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2 3 4
RSS
Артефакты при рисовании карт из разных потоков
 
Вы его не упростили, вы его изменили :) У вас отдельный поток рисует горизонтальную линию высотой 1 пиксель для общего изображения... :) У меня же отдельный поток рисует целый прямоугольник.
Пробовал как и вы сохранять в png сдвинутое изображение и подрисованные к нему прямоугольники - также не совмещаются в GIMP как у меня в программе. Причём не обязательно использовать многопоточность - это же проявляется и при использовании mapPaintByFrameToXImagePro с одним потоком. Странно то, что с mapPaintToXImage таких проблем не возникает.
Создание hpaint у меня занимает 1-2 мс.
 
Возможно, я не понял проблемы.
Я предположил что рисование линии равносильно рисованию прямоугольника.
Не могли бы Вы немного модифицировать данный пример, чтобы я понял о чем речь?
Я до сих пор не понял.
 
Пример я привёл в 28 и 29 сообщениях этой темы, только начало примера в 29 сообщении, а продолжение в 28. Если по ним что-то непонятно, то я готов пояснить :)
Суть проблемы в том, что прямоугольники, которые подрисовываются при скроле, смещаются относительно неизменившегося изображения карты при использовании mapPaintByFrameToXImagePro.
 
Предлагаю модифицировать приведенный мной компактный пример, поскольку его легко запустить и проверить как с Вашей, так и с нашей стороны.
В данном случае его функциональность аналогична вертикальному скроллингу с шагом в один пиксель.
Каким образом необходимо модифицировать пример, чтобы он соответствовал Вашей проблеме? Достаточно ли увеличить высоту прямоугольника, который рисуется за раз?
 
Если я модифицирую ваш пример, то он превратится в мой из 28 и 29 сообщений... :)
Отличие моего примера от вашего состоит в том, что смещаю карту не по 1 пикселу за раз, а по несколько - в зависимости от величины, на которую юзер сместил карту - и не только по вертикали или горизонтали, а сразу по обоим направлениям. В результате прорисовываются не линии, а прямоугольники.
Изменено: Tacio - 06.06.2017 16:10:52
 
Вот графический пример проблемы.
Первая картинка - результат смещения карты из правого нижнего угла в левый верхний. Код получения такой картинки представлен в сообщении 29.
Вторая - то, что нужно подрисовать к первой справа.
Третья - то, что нужно подрисовать к первой снизу.
Вторая и третья картинки получены с помощью кода из 28 сообщения.
Теперь попробуйте совместить первую и третью картинки :)
Изменено: Tacio - 06.06.2017 16:49:14
 
Цитата
Tacio написал:
Павел, при рисовании с помощью mapPaintToXImage у меня тоже проблем нет. Проблема проявляется только при использовании mapPaintByFrameToXImagePro. Причём как в однопоточном, так и в многопоточном режиме.
У меня на карте изменчивая обстановка, поэтому к тому времени как пользователь пролистнёт карту к тем самым заранее отрисованным пикселяем, обстановка может поменяться, а я этого не отображу....
Функции серии mapPaintByFrame выполняют расчет плавающего масштаба отображения на каждый вызов. Тут может быть "дрожание" в зависимости от входных параметров.
Формировать изображение лучше кратными порциями по ширине и высоте. Например, кратно 64. Такой же шаг можно ставить и для скроллинга.
Для современных мониторов это будет узкая полоска.

Для сокращения времени создания hPaint, их можно держать массивом по числу потоков и выдавать по индексу (номеру) потока.
 
Олег, спасибо за разъяснение!
Я пробовал выводить прямоугольники с высотой и шириной кратными 4, но не помогло, попробую с 64...
Надеюсь, что в будущем вы доработаете вывод изображения с помощью mapPaintByFrame*, чтобы он в данном плане был аналогичен mapPaintToXImage :)
 
Приветствую!

Думается, что mapPaintByFrame* не сможет быть аналогичным mapPaintToXImage, т.к. он работает не в PP_PICTURE, а размеры XImageDescription ограничены именно в пикселях. Поэтому в зависимости от DFrame запрашиваемой области при преобразовании в пиксели и подбора масштаба для "втискивания" фрагмента карты в указанные размеры будет сдвиг.

С уважением,
Матвеев П.В.
Страницы: Пред. 1 2 3 4
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности