There's 2 ways to do it. The first is to render directly to a Form /
PictureBox / Printer / PropertyBox like this:
---------------------------------------------
Dim objAIL As cAdvancedImagery
Dim hImg As Long
Dim hImg2 As Long
' Initialize AIL
Set objAIL = New cAdvancedImagery
' Load the background image
Call objAIL.IO_LoadImage("c:\test.bmp", hImg)
' Load the foreground transparent image
Call objAIL.IO_LoadImage("c:\test111.bmp", hImg2)
' Convert the color WHITE to transparent on the foreground image
Call objAIL.Effect_SetTransparentColor(hImg2, vbWhite, 0, True)
' Make the form visible
Me.Visible = True
Me.AutoRedraw = True
' Render the background image normally
objAIL.Render_Normal hImg, Me.hDC
Me.Refresh
' Render the foreground image transparently
objAIL.Render_Alpha hImg2, Me.hDC
Me.Refresh
' Clean up
Call objAIL.IO_DestroyImage(hImg2)
Call objAIL.IO_DestroyImage(hImg)
Set objAIL = Nothing
MsgBox "Success"
---------------------------------------------
The other is to combine them in memory like this:
---------------------------------------------
Dim objAIL As cAdvancedImagery
Dim hDevCon As Long
Dim hTempImg As Long
Dim hNewBmp As Long
Dim hOldBmp As Long
Dim hImg As Long
Dim hImg2 As Long
' Initialize AIL
Set objAIL = New cAdvancedImagery
' Load the background image
Call objAIL.IO_LoadImage("c:\test.bmp", hImg)
' Load the foreground transparent image
Call objAIL.IO_LoadImage("c:\test111.bmp", hImg2)
' Convert the color WHITE to transparent on the foreground image
Call objAIL.Effect_SetTransparentColor(hImg2, vbWhite, 0, True)
' Create a temporary image to create a BITMAP from
Call objAIL.IO_CreateNew(hTempImg, objAIL.Info_Width(hImg),
objAIL.Info_Height(hImg), 32)
' Convert temp image to BITMAP
Call objAIL.Convert_ImageToBitmap(hTempImg, hNewBmp)
' Clean up temp image
Call objAIL.IO_DestroyImage(hTempImg)
' Create a memory-based Device Context (DC)
Call objAIL.MemoryDC_Create(hDevCon)
' Insert the bitmap into the memory DC (this sets the
width/height/color depth of the memory DC)
Call objAIL.MemoryDC_InsertBitmap(hDevCon, hNewBmp, hOldBmp)
' Render the background image normally
objAIL.Render_Normal hImg, hDevCon
' Render the foreground image transparently
objAIL.Render_Alpha hImg2, hDevCon
' Pull the modified image out of the memory DC by putting back the
original BITMAP
Call objAIL.MemoryDC_InsertBitmap(hDevCon, hOldBmp, hNewBmp)
' Clean up the DC (the old/original BITMAP is automatically destroyed
with the DC)
Call objAIL.MemoryDC_Destroy(hDevCon): hOldBmp = 0
' Convert the BITMAP back to an image
Call objAIL.Convert_BitmapToImage(hNewBmp, hTempImg)
' Clean up the BITMAP
Call objAIL.IO_DestroyBitmap(hNewBmp)
' Now that we have the image we want, display it for inspection
Me.Visible = True
Me.AutoRedraw = True
objAIL.Render_Normal hTempImg, Me.hDC
Me.Refresh
' Clean up
Call objAIL.IO_DestroyImage(hTempImg)
Call objAIL.IO_DestroyImage(hImg2)
Call objAIL.IO_DestroyImage(hImg)
Set objAIL = Nothing
MsgBox "Success"
---------------------------------------------
I can see that the process of overlaying images transparently is a bit
too complex... so I'm going to be adding a new function to AIL shortly
which will do all this for you (in a more efficient manner). I'll
call it "Effect_OverlayPictureEx".
- Kevin
--- In AIL_Development@yahoogroups.com, "Michael" <michael.reep@...>
wrote:
>
> I've seen the sample picstures of what AIL can do, so I know this
> has been done, atleast some way.
>
> I'm trying to use Effect_OverlayPicture, and trying to put one image
> on top of another with a transparent background (similar to the
> FreeImage Composite function).
>
> I can load an image, and use:
> Effect_SetTransparentColor (hImg, vbWhite)
> and stream that back to the browser as a PNG, and everything's cool,
> but when I do this:
>
> IO_LoadImage strPath,hImg2,IF_PNG
> Effect_SetTransparentColor hImg2,vbWhite
> Effect_OverlayPicture hImg, hImg2, 0, 0
>
> the background on the second image (hImg2) is white, no matter what.
> I have even loaded transparent GIF's and transparent PNG's into
> hImg2 and the backgrounds are still white.
>
> Any help is appreciated.
> -Michael
>