Zooming an image is like taking a rectangle of the source image and scaling it up, then displaying it on the BGRAVirtualScreen.
You can see how it's done in LazPaint, but his source code is very big.
Is not so easy, but is not that hard, you can try yourself to code one zooming function.
I did one for a level editor, included in BGRAGames, for example, there you have another source code, this one I think is a lot smaller than LazPaint, but his domain is not images but sprite maps.