the problem is that your superimpose a Image Control over another Image Control, the correct way is this:
Code: Select all
#include "hmg.ch"
FUNCTION Main()
PRIVATE hBitmap1 := 0
PRIVATE hBitmap2 := 0
DEFINE WINDOW Form_1 ;
AT 90,90 ;
WIDTH 800 ;
HEIGHT 600 ;
TITLE "Giovanni" ;
MAIN;
ON INIT Proc_ON_INIT ();
ON RELEASE Proc_ON_RELEASE ();
ON PAINT Proc_ON_PAINT ()
@ 500, 350 BUTTON Button_1 CAPTION "Save Image" ACTION SaveImage()
END WINDOW
ACTIVATE WINDOW Form_1
RETURN NIL
PROCEDURE Proc_ON_INIT
hBitmap1 := BT_BitmapLoadFile ("background.png")
hBitmap2 := BT_BitmapLoadFile ("cocacola.png")
RETURN
PROCEDURE Proc_ON_RELEASE
BT_BitmapRelease (hBitmap1)
BT_BitmapRelease (hBitmap2)
RETURN
PROCEDURE Proc_ON_PAINT
LOCAL hDC, BTstruct
hDC := BT_CreateDC ("Form_1", BT_HDC_INVALIDCLIENTAREA, @BTstruct)
BT_DrawBitmap (hDC, 0, 0, 800, 600, BT_STRETCH, hBitmap1)
BT_DrawBitmapTransparent (hDC, 120, 150, 100, 150, BT_STRETCH, hBitmap2)
BT_DeleteDC (BTstruct)
RETURN
PROCEDURE SaveImage
LOCAL hBitmap := BT_BitmapClone (hBitmap1)
BT_BitmapPasteTransparent (hBitmap, 120, 150, 100, 150, BT_STRETCH, hBitmap2, NIL)
BT_BitmapSaveFile (hBitmap, "SaveImage.png", BT_FILEFORMAT_PNG)
RETURN