Applying transformations and combining bitmaps GDI and .NET
===

I am creating a method that loads 2 images, applies some transformations to them (scaling/rotation), then draws them at a certain point on on another image using .NET Graphics class.

The process I am currently attempting is as follows:

    Load bmp1
    Load bmp2
    Create graphics object from bmp1
    Apply tranformations
    Save
    Repeat process for bmp2
    Instantiate new merged bmp obj
    Create graphics object from merged bmp
    Draw bmp1 & bmp2 on merged bmp
    Save

I am attempting to do this with the code below:

    // load existing bmps
    var bmp1 = new Bitmap(Path.Combine(_staticIconsPath, staticIcon.Filename));
    var bmp2 = new Bitmap(Path.Combine(_movableIconsPath, movableIcon.Filename));
    
    // apply transforms to bmp1
    var canvas1 = Graphics.FromImage(bmp1);
    canvas1.ScaleTransform(0.5f, 0.5f);
    canvas1.RotateTransform(45.0f);
    canvas1.Save();
    
    // apply transforms to bmp2
    var canvas2 = Graphics.FromImage(bmp2);
    canvas2.ScaleTransform(0.5f, 0.5f);
    canvas2.RotateTransform(45.0f);
    canvas2.Save();
    
    // create final merged bmp
    var mergedBmp = new Bitmap(590, 590);
    mergedBmp.SetResolution(bmp1.HorizontalResolution, bmp1.VerticalResolution);
    
    // draw transformed images on to final bmp
    var mergedCanvas = Graphics.FromImage(mergedBmp);
    mergedCanvas.DrawImage(bmp1, 0, 0);
    mergedCanvas.DrawImage(bmp2, 0, 0);
    
    mergedCanvas.Save();

However the end result is simply the two original bitmaps that were loaded, both drawn on top of each other as expected, but with no transforms applied.

I have never used the GDI before or done any image manipulation so I assume I am misunderstanding something fundamental about the process that must be followed. Can anyone help me out and point me in the right direction?