title: Delphi: GR32 draw a PNG with alpha onto a TBitmap32 without clearing its content
body: <p>After going through several other related questions I couldn't come up with a working code for this, so please spare the "duplicate question" tags.</p>
  
  <p>Given a PNG image with either per-pixel alpha channel or single-color transparency, I need code to draw it onto a TBitmap32 which already contains an image (some drawing goes on before the PNG part). So let's say my TBitmap32 is 200x200, I do some drawing on it, then I want to ~insert a smaller transparent PNG image on top of its current content, transparently according to the PNG's alpha channel data or single-color alpha.</p>
  
  <pre><code>Uses pngimage, GR32;
  
  procedure TForm1.Button1Click(Sender: TObject);
  Var b: TBitmap;
      b32: TBitmap32;
      p: TPngImage;
  begin
    b   := TBitmap.Create;
    b32 := TBitmap32.Create;
    p   := TPngImage.Create;
  
    // 50x50 PNG
    p.LoadFromFile('z:\test2.png');
  
    b.Width    := 200;
    b.Height   := 200;
    b32.Width  := 200;
    b32.Height := 200;
    // some drawing happens on the b32~
  
    // insert code here to draw the png onto the b32, on top of
    // what's already drawn, and at specific coordinates i.e 10,10
  
  
    /////////////////////////////
  
    b32.DrawTo(b.Canvas.Handle,0,0);
    Canvas.Draw(0,0,b);
  
    p.Free;
    b32.Free;
    b.Free;
  end;
  </code></pre>
  
  <p>Original PNG:  </p>
  
  <p><a href="https://i.stack.imgur.com/7YUK2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/7YUK2.png" alt="enter image description here"></a></p>
  
  <p>Results so far:  </p>
  
  <p><a href="https://i.stack.imgur.com/Qgzir.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Qgzir.png" alt="enter image description here"></a></p>