The standard way to cache a morph's drawing is to call a private
drawOn: to render the morph's *own* image to a Form, and then use
that instead of the expensive drawing later. Then in your drawOn:
method you'd just bitBlt the form instead of doing the drawing (of
course, you throw away and redraw the form when the morph's image
changes (perhaps in your #changed method)).
However, you really want to get the submorphs' images too. So in
addition to (or maybe instead of) overriding drawOn: you'd want to
override drawSubmorphsOn: to use a form instead.