I can write in the TShape of the DebugWindow, but in order to scroll, I will have to copy and paste areas of the Shape. Can this be done better with a TImage ?
Yes, if you don't want to do it in a TShape.OnPaint event, you need to do it on a persistent canvas.
The canvas of TShape isn't persistent. Each time it needs to be redrawn (which Windows decides and definitely happens each time you move the complete form) the original shape is drawn which looses all you own drawn things.
That's why you need to draw those things in the Onpaint of TShape so they also get drawn when needed.
The other option is to use a persistent canvas like the one from a TBitmap (for instance in a TImage). In that case your drawing will be fine on the bitmap and stored there. Each time the bitmap needs to be redrawn, it's automatically take from there.
But do note, that is you want to change some text, you'll need to repaint that entire area. Otherwise you might end up with text over text.
But... Would it be better to just tell us what this is for?
If it's a debug window you might be better of just using a TMemo on a TForm with summer extra elements like TLabel etc. Building a form in code like that might be more suitable for a debugwindow then drawing on a canvas.
Or do you have any other special need for it??