I like the page method: LargeChange = picHolder.Height. picHolder is the container with the image inside of it. Each largechange event moves the image a "page" at a time. SmallChange can be LargeChange\10 and if value = zero, then make it one. This way smallchange is 1/10th of large change. But by making smallchange > 1, user must use the thumb to scroll single lines of the image.

An option to allow finer control if smallchange>1, may be to check for mouse down on the change event & if, say the ctrl key was down, revert to single pixel movements? Just thinking out loud & would require some more thought.