Oh, you want a retained mode graphics system. That should be pretty easy to write yourself. <br><br>Just write a class like TDrawable with a Paint(), HitTest(Point), and Intersects(Rect) methods and derive from that to have your different drawn types. <br>
<br>Keep a list of those items in your drawing surface.<br><br>Call HitTest(MousePoint) when the mouse moves over the drawing area and track the hot/pressed/captured item.<br><br>When you surface needs to be painted, loop through the list and if DrawableItem.Intersects(DirectRect) then DrawableItem.Paint().<br>
<br>I don't think you'll find a ready made system to accommodate all your drawing needs.<br>