Posted: Mon Sep 26, 2005 7:18 pm
This don't stop after a while like Fred's did:
I got it from here.
I got it from here.
Code: Select all
Procedure DrawTransparentImage(DC, ImageID, x, y, TransparentColor)
Protected ImageList, BM.BITMAP
GetObject_(ImageID, SizeOf(BITMAP), BM.BITMAP)
ImageID = CopyImage_(ImageID, #IMAGE_BITMAP, BM\bmWidth, BM\bmHeight, 0)
ImageList = ImageList_Create_(BM\bmWidth, BM\bmHeight, #ILC_COLORDDB|#ILC_MASK, 1, 0)
ImageList_AddMasked_(ImageList, ImageID, TransparentColor)
ImageList_Draw_(ImageList, 0, DC, x, y, #ILD_TRANSPARENT)
ImageList_Destroy_(ImageList)
DeleteObject_(ImageID)
EndProcedure
Enumeration ;Images
#Image1
#Image2
EndEnumeration
CreateImage(#Image1,32,32)
CreateImage(#Image2,32,32)
UseImage(#Image1)
StartDrawing(ImageOutput())
Box(0,0,32,32,RGB(255,0,0))
Box(5,5,22,22,RGB(0,0,0))
StopDrawing()
UseImage(#Image2)
StartDrawing(ImageOutput())
Box(0,0,32,32,RGB(0,0,255))
Box(5,5,22,22,RGB(0,0,0))
StopDrawing()
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"DrawTransparentImage()")
Repeat
Event = WindowEvent()
X = Random(168)
Y = Random(168)
Image = Random(#Image2)
DC = StartDrawing(WindowOutput())
DrawTransparentimage(DC,UseImage(Image),X,Y,RGB(0,0,0))
StopDrawing()
Until Event = #PB_Event_CloseWindow