Quote Originally Posted by passel View Post
You don't draw on a graphics object, you use a graphics object to draw on something.
You probably want to use a number of bitmaps, and use a graphics object created for that bitmap to draw your src images (or just load them into bitmaps from the file).
Then, wherever you plan to draw that image, rotated, scaled, etc. you would have a graphics object for the thing you're going to draw on, setup the matrix to rotate, move and scale the coordinate system (that is the way I think of it) and then draw the image.
If you want to remove it later, you just redraw your image, not drawing the one that you don't want, so it is "removed".

There is an example I wrote some time back (it is in VB 2005, although written in late 2011 which is about a year after I started messing with VB.Net). I checked my previous attachments, and it looks like I haven't posted it before.
It is not directly related to your situation, but was written as a kind of tutorial for a co-worker, and I wrote the original version of it in C#, even though I don't work in C# (then or now). The reason I wrote it is because he saw some other type graphic work I had done in VB.Net and wondered it he could do the same thing in C#. I said I'm sure he could since it is all done with the same Managed GDI+ access in either language. So, this example (now in VB) was pretty much the first C# program I ever wrote, and is still basically the only C# program I have written. It was about a week after writing the C# version that I figured a VB.Net version of it would also be handy, so wrote what is attached here.

The part I though made it unique as a "tutorial" type example, is that after the primary drawing example was done, I replicated the code and added a "step" mode, so that you can step through the drawing process a little bit at a time, while the program prints some information about what it is doing at that step, and shows the line or two of code that is being executed at that step. Also, even as you are "stepping" through the code, at any given step, the user interface to the drawing is still active, so you can manipulate the panning, zooming, rotation, etc... and see how those inputs affect the drawing up to that step.

There are a number of user inputs. Below the image is a plain picturebox that is used as a dragging surface.
If you drag on it with the left mouse button it rotates the horizon angle (the roll of an aircraft) and the pitch.
If you drag on it with the right mouse button, it scales the image up and down in size. If you scale it down, you can see how the horizon is always drawn as two large rectangle. And when you look at the code, you will see the coordinates and drawing of those two rectangles is always the same. You don't change how you draw the rectangles, you change the environement (the coordinate system is rotated, panned and scaled by the matrix, not the points you use to do the drawing).

That may not be clear, which is why I included the step mode to try to interactively explain how I view the drawing process each step of the way.

If you drag on the image itself, the left button will allow panning the drawing (moving the center of rotation to some other area of the visible area.
If you drag with the right button you change the size of the picturebox the image is being drawn into.

Pressing the Reset button gets the scale and offsets back into their original values.
It doesn't address your immediate desire, but I think it could still be interesting all the same and you might learn something related.

Perhaps something a little closer would be the CardGame from post #12 of this thread, which implements the drawing of the cards by dragging and moving images around. Of course it doesn't do any scaling or rotation and if I had the time, I could put a custom example tailored to your situation, but I don't really have it at the moment.
Can you please send the C# version? Thank you.