Hello,
I had the same problem a few months ago. I have found that
Graphics.Drawimage does work correctly to copy parts of an image at another place: example
Graphics g = Graphics.FromImage(mazeImage);
mazeElements.SetResolution(g.DpiX, g.DpiY)
g.DrawImage(mazeElements, 32 * x, 32 * y, new Rectangle(item * 32, 0, 32, 32), GraphicsUnit.Pixel);
g.Dispose();
this will copy a rectangle from the bitmap "mazeElements" at the desired location in the bitmap "mazeImage"
WARNING: there are rounding errors that will possibly corrupt the results by putting the drawn image at a position shifted by one pixel if both bitmaps do not have the same Dpi. That's the reason for the line with "SetResolution"
I hope this helps