Oscilloscope time base
Controlling The ADC

As a general approach, I would have the controlling app tell the PIC32 what the sample rate to use. So, for example, you select a time interval of 0.1 seconds, and the PIC32 now samples 10 times a second.  The PIC32 could stream samples instantly or bucket them in smaller time increments, like every 3 seconds, etc.  Having the application request every single sample will be fraught with unnecessary latency, IMO.

I'd probably do something like: send sample values over UDP with a timestamp of when they were taken.  Asynchronous transmission so my controlling app doesn't freak out if the link is crappy and it gives me enough info to bucket my data on the controlling app for drawing.

Drawing The Signal

This mainly depends on your time division.  You need to keep enough samples in memory to draw the whole time span of the graph.  However, the refresh rate is up to you.  You could simply store the latest values in a buffer, then when its time to refresh the graph, append them to the buffer of values to be shown, remove all values that are now older than the newest sample minus the time span of the graph.

So, simply: if your graph has ten 1 second divisions, and your latest sample has a timestamp of 37 seconds, you only want to show samples where the timestamp is greater than (37 - 10) = 27 seconds.

There's also optimizations that can be done like capping the number of values you keep per time division to limit memory usage and drawing samples that will get anti-aliased anyways.