The question relates to: Drawing on a paintbox - How to keep up with mouse movements without delay?
I was going to at some point ask the question of how to repaint only part of a paintbox without invalidating the whole paintbox, which is slow when there is a lot of drawing going on or in my case when there are a lot of tiles drawn on screen.
We now have a piece of bespoke work that uses a TScroll Box and the client is reporting a similar problem so I'm working round it in the same way. Invalidate(); if (AControl is TWin Control) then for I := 0 to TWin Control(AControl).
I hide the TScroll Box scrollbars and add in my own. Note, this test code is not currently running in Citrix, I've tested on XP and Window 7. Control Count - 1 do Invalidate Everything(TWin Control(AControl).
From the link above Peter Kostov did touch on the subject briefly in one of his comments: before but I will be reading more about it after I post this question.
With that said, I wanted to know how exactly could you determine if regions of a bitmap have changed?
But you won't need that, if you invalidate part of only one item, will be called for only that item.Does this involve something simple or is there more magic so to speak involved in determining which regions have changed?Right now I am still painting directly to the paintbox but once I draw to the offscreen buffer bitmap my next step is to optimise the painting and the above comments sound exactly like what I need, only the determining regions that have changed has confused me slightly.But this adversely affects overall performance because of all the redundant repainting.So my question is: (or 'False' as 'b Erase' of 'Invalidate Rect', see its documentation).Once you draw it to the canvas, the canvas has no acknowledgement of, for example, a box drawn to it. You could use my windowed paint control from this question as a starting point: How could I fade in/out a TImage? The components need to update in response to user interactions.I think this might be an issue with all components that don't descend from TWin Control. Scrolling itself is smoother with David's solution, but there's less flicking using WM_SETREDRAW and Redraw Window. VCL controls can call Invalidate() to be placed into a queue for repainting. Fire Monkey controls have a Repaint() method, but AFAICT that forces the control to be repainted immediately.A queue type system would be more appropriate in some circumstances.