Code archives/Graphics/Half-Bright Images
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Hi, this one is for creating shadows in 2D Cause the only way to make 2D Graphics transparent is to write the pixel one by one if thought about a fast solution for that ! This is what i developed: Shadow.png mußt be black and white !!! There are some problems with colormasking when used in 16bit mode !!! | |||||
Graphics 800,600,16,2 SetBuffer BackBuffer() background=LoadImage("bg.jpg") player=LoadImage("player.png") playershadow=LoadImage_hb("shadow.png") While Not KeyHit(1) begin=MilliSecs() Cls ;mouse pos mx=MouseX() my=MouseY() ;draw background DrawBlock(background,0,0) ;draw playershadow drawblock_hb(mx+20,my+20,playershadow) ;draw player DrawImage(player,mx,my) finish=MilliSecs() ;calc FPS fps=1000/(finish-begin+1) Text 10,10,fps Flip Wend End ;Function to load the Half-Bright Images Function LoadImage_hb(imageload$) ;load image image=LoadImage(imageload) ;analyse the Image x=ImageWidth(image) y=ImageHeight(image) ;ceate bank for Image (x*y + infobytes for size info) bank=CreateBank(x*y+2) PokeByte bank,0,x PokeByte bank,1,y LockBuffer(ImageBuffer(image)) pixelstep=2 For sx=0 To x-1 For sy=0 To y-1 ;this one is for scanning the Image pixel=ReadPixel(sx,sy,ImageBuffer(image)) And $ff PokeByte bank,pixelstep,pixel pixelstep=pixelstep+1 Next Next UnlockBuffer(ImageBuffer(image)) FreeImage(image) ;return bankhandle Return bank End Function ;this one is for drawing the Half-bright image Function drawblock_hb(offx,offy,image) LockBuffer(BackBuffer()) x=PeekByte(image,0) y=PeekByte(image,1) pixelstep=2 For sx=0 To x-1 For sy=0 To y-1 pixel=PeekByte(image,pixelstep) ;if pixel is black ... If Not pixel ;thats the main thingy-> ;read the pixel in BackBuffer on current position ;now mask the 4 color bytes ;then shift the right ct=(ReadPixelFast(sx+offx,sy+offy) And $fefefefe) Shr 1 ;know write the half brightd pixel WritePixelFast(sx+offx,sy+offy,ct) End If pixelstep=pixelstep+1 Next Next UnlockBuffer(BackBuffer()) End Function |
Comments
None.
Code Archives Forum