Here is a program I wrote up demonstrating the various blend modes and alpha settings. It draws three overlapping circles, with the alpha channel decreasing from the center of the circle to the edge.
Strict
Graphics 800,600
Local RedOval:TImage = CreateImage(128,128,1,DYNAMICIMAGE)
Local BlueOval:TImage = CreateImage(128,128,1,DYNAMICIMAGE)
Local GreenOval:TImage = CreateImage(128,128,1,DYNAMICIMAGE)
Local Mode:Int = SOLIDBLEND
Local Alpha:Float = 1.0
Local PixMap:TPixmap
Local Color:Int = False
SetClsColor 0,0,0
'Create three circles with the alpha channel at 255 in the center and gradually
' decreasing to 0 at the edge of the circle
PixMap = LockImage(RedOval)
For Local x = -64 To 63
For Local y = -64 To 63
Local Distance:Float = Sqr(x*x+y*y)
If Distance < 64
WritePixel(Pixmap,x+64,y+64,(Int(255-Distance*4)Shl 8 + 255)Shl 16)
Else
WritePixel(PixMap,x+64,y+64,0)
End If
Next
Next
UnlockImage(RedOval)
PixMap = LockImage(GreenOval)
For Local x = -64 To 63
For Local y = -64 To 63
Local Distance:Float = Sqr(x*x+y*y)
If Distance < 64
WritePixel(Pixmap,x+64,y+64,(Int(255-Distance*4)Shl 16 + 255)Shl 8)
Else
WritePixel(PixMap,x+64,y+64,0)
End If
Next
Next
UnlockImage(GreenOval)
PixMap = LockImage(BlueOval)
For Local x = -64 To 63
For Local y = -64 To 63
Local Distance:Float = Sqr(x*x+y*y)
If Distance < 64
WritePixel(Pixmap,x+64,y+64,(Int(255-Distance*4)Shl 24 + 255))
Else
WritePixel(PixMap,x+64,y+64,0)
End If
Next
Next
UnlockImage(BlueOval)
'Main loop
While Not KeyHit(KEY_ESCAPE)
Cls
SetBlend Mode
SetAlpha Alpha
'draw the three circles overlapping
DrawImage RedOval,100,100
DrawImage GreenOval,164,100
DrawImage BlueOval,132,164
SetBlend SOLIDBLEND
SetAlpha 1.0
Select Mode
Case SOLIDBLEND
DrawText "Mode: SOLIDBLEND",10,400
Case MASKBLEND
DrawText "Mode: MASKBLEND",10,400
Case ALPHABLEND
DrawText "Mode: ALPHABLEND",10,400
Case LIGHTBLEND
DrawText "Mode: LIGHTBLEND",10,400
Case SHADEBLEND
DrawText "Mode: SHADEBLEND",10,400
End Select
DrawText "Alpha: "+alpha,10,430
DrawText "M: Change Blend Mode",10,500
DrawText "B: Toggle Background Color",10,520
DrawText "Up/Down Arrows: Increase/Decrease Alpha",10,540
Flip
'M: Change Blend Mode
If KeyHit(KEY_M)
Select mode
Case SOLIDBLEND
Mode = MASKBLEND
Case MASKBLEND
Mode = ALPHABLEND
Case ALPHABLEND
Mode = LIGHTBLEND
Case LIGHTBLEND
Mode = SHADEBLEND
Case SHADEBLEND
Mode = SOLIDBLEND
End Select
End If
'B: Change ackground color
If KeyHit(KEY_B)
If Color
Color = False
SetClsColor 0,0,0
Else
Color = True
SetClsColor 255,255,255
End If
End If
'Up/Down: Change Alpha
If KeyHit(KEY_UP) And Alpha < 1.0 Then Alpha :+ .1
If KeyHit(KEY_DOWN) And Alpha > 0.0 Then Alpha :- .1
Wend