9

The way QGIS draws the canvas when panning is quite annoying. If I pan the map even a little bit everything goes blank for a second or two before the layers are drawn. It looks like this happens only when the layer content is supposed to be downloaded (my PostGIS layers are drawn without hurting my eyes), so this might be just a problem with the configuration rather than the code. Does anyone have a solution?

Oh, and the question should be "how can I make QGIS suitable for epileptics?". It's that annoying.

EDIT to pose question for QGIS 2.4 onwards:

This still appears to be an issue in 2.4. There seem to be some helpful setting under Settings > Rendering but these don't help the issue. QGIS just lacks the nice, slippy, smooth feel of other map viewers. Is caching still on the cards?

5
  • This is one of biggest pet peeves with Qgis. The problem is really terrible when you have a layer from the OpenLayers Plugin in your map. Commented Jan 22, 2013 at 3:20
  • It's not ideal, but you can turn off rendering by ticking the render box on the bottom toolbar. This means that data outside the current viewport is no longer shown/refreshed, though.
    – djq
    Commented Jan 22, 2013 at 6:36
  • it is even more annoying when you think that the same layers are rendered "correctly" by geoserver and even udig. Alas i cannot turn to them, i need qgis's advanced sql capabilities to test some geo queries
    – orieeel
    Commented Jan 22, 2013 at 11:59
  • 1
    @orieeel geoserver and udig are done in Java and use a different rendering technique
    – Nathan W
    Commented Jan 22, 2013 at 13:07
  • In Master you could try Settings -> Options... -> Rendering and ticking "Enable back buffer". Not sure if this is possible in 1.8. N.
    – nhopton
    Commented Mar 4, 2013 at 19:36

4 Answers 4

7

For anyone who is still having this problem, in QGIS 2.10 you can go to Settings > Options > Rendering, and change the Map update interval to be larger. If QGIS can render all of the layers in less than this amount of time, it will update the whole canvas at once, which gets rid of the blinking. If it cannot update all the layers before this interval passes, it will show a partial update, which causes the blinking. You can view how long a canvas update takes by enabling the debugging flag in the rendering settings.

1
  • I am digitzing polygons based on a UAV images (1GB raster RGB image) and after updating the polygon, the image reloaded each time. that took about 5 seconds for each polygon! In my case "use render caching" in the same options solved my problem! QGIS 2.10.
    – Jens
    Commented Aug 3, 2016 at 11:26
5

I'm afraid the answer is: You can stop QGIS from blinking by funding a developer to implement a non-blinking version.

7
  • 1
    To explain why: It currently comes down to how the layers and features are rendered in the rendering engine. There are some future developments, mainly multi-threading, and caching, that should help to reduce this but not fully.
    – Nathan W
    Commented Jan 22, 2013 at 7:58
  • 1
    Underdark : LOL
    – QgisTn
    Commented Jan 22, 2013 at 10:33
  • @underdark wish i could, but it won't happen from my student budget.
    – orieeel
    Commented Jan 22, 2013 at 12:06
  • @nathan-w just tested the landcover raster from qgis demo dataset and there are no panning problems SO i'm pretty sure the problem appears mainly when the layers are not on localhost
    – orieeel
    Commented Jan 22, 2013 at 12:24
  • maybe this problem can be solved by using a server on localhost for caching?...it's just incredible the wms/wfs data that has already been downloaded is not reused..
    – orieeel
    Commented Jan 22, 2013 at 12:28
3

There's an easy "fix" if you're brave enough to change the code source of QGIS:

Open 'qgsmaptoolpan.cpp', and into the corresponding 'canvasMoveEvent' member, add the sentence "mCanvas->refresh();" as follows:

void QgsMapToolPan::canvasMoveEvent( QMouseEvent * e )
{
  if (( e->buttons() & Qt::LeftButton ) )
  {
    mDragging = true;
    // move map and other canvas items
    mCanvas->panAction( e );
    mCanvas->refresh();
  }
}

(QGIS version 1.8 Lisboa)

This will force a continuous refresh on the map while you are panning with the mouse. It could go a bit slower, but it works fine, yeah, a relax for my eyes.

3
  • where is that file..? I can't find it in my OpenSuse 12.x Thanks
    – tomsik
    Commented Apr 2, 2013 at 8:26
  • Why the need to modify the source code when can just override the method?
    – sean
    Commented Nov 8, 2014 at 9:19
  • How would one do that, @sean?
    – inc42
    Commented Jul 17, 2020 at 10:42
2

This was fixed in QGIS 3.18, the map redraws are now using existing elements: https://www.qgis.org/en/site/forusers/visualchangelog318/index.html#feature-smarter-map-redraws

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.