Onko kenelläkään tallessa oma tekemää ghostimage funktiota, katsoisin miten se toimii...
Code: Select all
SCREEN 500,400
ClsColor 255,255,255
Dim Colour(10,10,2,1)//kuvien tiedot
CenterText 250,200, "lataa..", 2
DrawScreen
Tausta = MakeImage(500,400)
DrawToImage Tausta
Color 255,0,0 //luodaan taustalle palikoita
Box 10,10, 60, 60, 1
Color 0,0,255
Box 100,100,400,46, 1
Color 0,255,0
Box 100,100,20,300, 1
Color 0, 0, 1
Box 19,19,402,302,0
DrawToScreen
DrawImage Tausta,0,0
map = LoadImage("media/map.bmp")
ExploreImage(map,20,20) //tutkitaan kuva
Dim kuva(20)
Color 0,0,0
For i=0 To 10
kuva(i) = OpacityImage(map,b#) //luodaan kuvat
b# = b# + 0.1
CenterText 250,200, "lataa... " + (20 + i*8) + "%", 2
DrawScreen
Next i
a = 10
Repeat
DrawImage Tausta, 0,0
a = Min(Max(a+(KeyHit(200)-KeyHit(208)),0),10)
DrawImage kuva(a), 20,20
Text 0,0, "FPS:" + FPS()
DrawScreen
Forever
//esivalmistellaan kuvaa...
Function ExploreImage(pic,picX,picY)
picW = ImageWidth(pic)
picH = ImageHeight(pic)
ReDim Colour(picW,picH,2,1)//laitettaan taulukko uuten kokoon
If picX > 0 And PicxX+picW < ScreenWidth() And picY > 0 And PicY+picH < ScreenHeight() //ettei mene ruuudun ulkopuolelle
Lock()
For x = 1 To picW
For y = 1 To picH
pixel = GetPixel2(picX + x, picY + y) //otettaan tausta talteen
Colour(x,y,0,0) = ((pixel Shl (1*8)) Shr 24)
Colour(x,y,1,0) = ((pixel Shl (2*8)) Shr 24)
Colour(x,y,2,0) = ((pixel Shl (3*8)) Shr 24)
Next y
Next x
Unlock()
DrawToImage pic
Lock()
For x = 1 To picW
For y = 1 To picH
pixel = GetPixel2(x,y) //otetaan itse kuva talteen
Colour(x,y,0,1) = ((pixel Shl (1*8)) Shr 24)
Colour(x,y,1,1) = ((pixel Shl (2*8)) Shr 24)
Colour(x,y,2,1) = ((pixel Shl (3*8)) Shr 24)
Next y
Next x
Unlock()
DrawToScreen
EndIf
EndFunction
//luodaan kuva
Function OpacityImage(pic,op#)
op = 1-op
picW = ImageWidth(pic)
picH = ImageHeight(pic)
newPic = MakeImage(picW,picH)
DrawToImage newPic
Lock()
For x = 1 To picW
For y=1 To picH
R = Colour(x,y,0,1)
G = Colour(x,y,1,1)
B = Colour(x,y,2,1)
ColorR = R+(Colour(x,y,0,0) -R)*op //yhdistetään värit
ColorG = G+(Colour(x,y,1,0) -G)*op
ColorB = B+(Colour(x,y,2,0) -B)*op
PutPixel2 x,y, (ColorB + ColorR Shl 16 + ColorG Shl 8) //pistettään se kasaan
Next y
Next x
Unlock()
DrawToScreen
Return newPic
EndFunction