EDIT: I have probably been underestimating the problem. If so, sorry about that. I'll leave the text below for the while in case there is something useful.
Sure it will work. You just add the x and y scroll offset values to the x and y click coordinates. (Or subtract them, depending on which way you calculate the offset).
For an example of how to use Robert's method you may find it useful to look at this on the Code Project:
CodeProject: Pan and Zoom Very Large Images. Free source code and programming help (I don't agree with everything there; you could use a picture box as long as you use its Paint sub instead of setting its image or background image. That would have the advantage that the pb is already double buffered.)
However you do it, the approach requires you to read the whole map image into memory. Was that what you wanted to avoid? I guess it must be possible to do something like the following:
1. Preprocess the map so you can store just the pixel data. Use Bitmap.Lockbits and Marshall.Copy to put all the pixels into an integer or byte array.
2. Save the array. The file will be a lot larger than the original image since it no longer has jpeg compression. But if you use it instead of the original image file, there is no need to read the whole file into memory at once.
3. When you want to get at part of the image, work out which part of the array you need and use a FileStream to read the appropriate part of the file.
4. Create a bitmap for the area to be drawn, and use LockBits to create a corresponding array. Then copy the filestream data into the array.
Obviously, this would be a lot more complicated than just reading the jpeg file, but if it works it should be possible to handle images whose size is limited only by storage. I haven't tried it but I will one of these days. Has anyone here already done something like this?
bye, VicJ