Drawing Canvas is not a good choice for animations. You need to make a snapshot after every frame and save it in an array, then restore it from the array - these are very slow operations. You can also save the canvas image in BinaryData, but there is no way to load it back into the canvas.
Have you tried Game Recorder object?