Quote Originally Posted by UWGRAD View Post
I need to refresh the graph always, even if the data point is with in the PictureBox. This is needed because the PictureBox will not update on its own with GDI functions, you have to tell it to refresh the hardware (screen).
Not necessarily true all the time. If the .AutoRedraw=False, it should update pretty much immediately (message queue size dependent), no need to invalidate. I might have it backwards regarding the AutoRedraw value, but you can quickly test this in a temp project.

Per MSDN documentation for WM_PAINT: The system sends this message when there are no other messages in the application's message queue.
The queue doesn't stay full very long unless the system/another window is flooding it.

Anyway, you said you have to Invalidate even if point is in the picturebox. But when you do this, is your invalidation rectangle only the size/position of that point? If not, do so and you should see some improvement. This is where I was attempting to go in post #3 above.