Actually, it is not that difficult.
-- Use photoshop or paintshop to assemble your icons into a single picture. That way you can place the whole toolbox into just one control.
That is because each control you take (for example, a picture box, is a windowed control and has its own expensive resources such as a handle, a device context, its own stack, local thread storage etc.)
-- When the mouse hovers over the control, do a hit-test. You can do this by handling the MouseMove event if the control provides one (pictures boxes do). If not, you can set a local mouse hook over the control (
http://www.vbforums.com/showthread.php?t=342209&highlight=mouse+hook).
-- Maintain a data structure/class that represents each icon. Store the dimensions, an id and a name for that icon, along with other custom properties you might want (such as the text associated with it that the user may enter when he places the icon on the canvas)
-- Maintain a data structure/class to represent the toolbox. This will contain a collection of icons, along with the co-ordinates of each icon so that you know which icon the user selects in the hit-test.
-- In the MouseMove and MouseDown events, redraw the client area ( Paint event, BitBlt, InvalidateRect, Update() ).
-- For the lines, use a raster operation (SetROP2) with an XOR operation to reverse the ink he is drawing with each time so that with the first move the ink is black and in the next move, you erase the black by re-drawing on the same co-ordinate with the color of the background.
-- Rinse and repeat.
Let me know if you need any help. I'll be glad to help out.