Не трать время зря - это ерунда.
Самые быстрые способы копирования:
GDI - создать совместимый контекст, создать совместимый битмап, асоциировать битмап с контекстом, скопировать bitblt`ом с контекста канваса на совместимый контекст. Восстановить изображение обратным копированием. при этом сохраненная копия остается "внутри" видеосистемы и при нормальном драйвере данная операция выполняется максимально быстро.
OpenGL - создать нужное количество текстур небольшого размера 64х64 или 128х128 чтоб "перекрыть" всю сохраняемую область. скопировать содержимое из активного буфера (с изображением) в текстуры с помощъю glCopyTexSubImage2D. Восстановить изображение рисованием квадов с соответствующими текстурами в ортогональной проекции тексель в пиксель. Это будет работать на самых древних компах, можно еще юзать для сохранения auxbufer, accumbufer, "современные" расширения - но это уже может гдето неработать. Также можно создать одну большую текстуру (в весь размер выводимой области) вместо кучи мелких - тоже будет работать невезде.