bcristian
Actually, using Direct3D is not the best choice for your want, even more so if you want to edit the image. As a side note, it is possible to use the GPU for image editing and get better performance than using the CPU, but that's really an advanced topic.
First of all, using D3D will make the memory problem worse, much worse in fact, for at least 2 reasons:
- the D3D system will eat some memory itself;
- the image data that gets rendered to the screen is not directly accessible by the CPU (there are exceptions, but again this is not simple stuff), so you end up with at least 2 copies of the image.
Also, the performance would not be great either, because of the additional overhead of passing the data back and forth between the CPU and the GPU - readbacks from the GPU are particularly slow.
And if that's not enogh, please take my word on it that learning D3D programming to the level where you can write even a decent (not production-ready) image editor or advanced presentation layer using it is not going to be a one-week business.
On a more optimistic note, a better way to do this would be to stick to the Windows GDI+ API - at least that's how I would do it. Obviously, having a huge image in one piece and moving it around will be really slow, so you need to cut it in smaller pieces and display those of them that actually are visible. For really big images, you might even want to implement a streaming mechanism so that you don't stall the application while reading 10+ MB of data from the disk. Oh, and yeah, this is another reason you might want to stay away from D3D for this app: for virtually all the cards around, the texture size limit is 4096x4096, or even 2048x2048 for older ones.