Käyttö:
x,y = paikka, johon piirretään se piste
alpha = näkyvyys. 100 = täysin näkyvä, 50 = puolinäkyvä, 0 = näkymätön
buf = käytettävä puskuri. Jos olet jo lukinnut tarvittavan puskurin, pistä tämä nollaksi ja kol-parametri -1:hdeksi
ret = jos tämä ei ole 0, jätetään koko piste piirtämättä ja palautetaan haluttu värikomponentti. 1 = punainen, 2 = vihreä, 3 = sininen, 4 = pikseliarvo.
Oletuksena 0
kol = jätä 0:ksi, jos et ole lukinnut käytettävää puskuria. Muuotin pistä tämän paikalle -1 ja buf-parametrin paikalle 0.
Funkkarin seassa muitakin funkkareita ja esimerkki
Code: Select all
'Piirtää läpinäkyvän pisteen, nykyisellä piirtovärillä tietenkin :)
SCREEN 400,300,0,0
lawn = LoadImage("Media\grass.bmp")
f = MakeObjectFloor()
PaintObject f,lawn
Repeat
DrawGame
juu=MouseX()/4
Color cbRed
mx = MouseX()
my = MouseY()
Lock
For x = 0 To 10
For y = 0 To 10
DrawAlphaDot(MX+x,MY+y,juu,0,0,-1)
Next y
Next x
Unlock
DrawScreen
Forever
'x,y = Pisteen x- ja y-koordinaatti
'alpha = läpinäkyvyysarvo. 100 = täysin näkymätön, 0 = tavallinen piste
'buf = Käytettävä puskuri. Oletuksena näyttö (SCREEN())
'ret = Palautetaanko käytetty väri. Jos muu kuin nolla, ei piirrä mitään pistettä ja palauttaa r,g tai b- komponentin
Function DrawAlphaDot(x,y,alpha,buf=0,ret=0,kol=0)
alpha = 100 - alpha
oldr = getRGB(RED)
oldg = getRGB(GREEN)
oldb = getRGB(BLUE)
If buf = 0 Then buf = SCREEN()
If kol<>-1 Then Lock buf
c = GetPixel2(x,y)
If kol<>-1 Then Unlock buf
r = PixelToColorComp(c,1)
g = PixelToColorComp(c,2)
b = PixelToColorComp(c,3)
Rdif = r - oldr
Gdif = g - oldg
Bdif = b - oldb
rPlus# = NumToPercent(Rdif,alpha)
gPlus# = NumToPercent(Gdif,alpha)
bPlus# = NumToPercent(Bdif,alpha)
c = ColorToPixelComp(oldr + rPlus#, oldg + gPlus#, oldb + bPlus#)
If ret=1 Then Return oldr + rPlus#
If ret=2 Then Return oldg + gPlus#
If ret=3 Then Return oldb + bPlus#
If ret=4 Then Return c
If kol<>-1 Then Lock buf
PutPixel2 x,y,c
If kol<>-1 Then Unlock buf
Color oldr,oldg,oldb
End Function
'laskee annetusta luvusta halutun prosenttimäärän
'num# = luku,josta lasketaan prosentit
'prosentit = prosenttiarvo. Esim 100 prosenttia
'luvusta 10 on 10,50% on 5,10% on 1 jne...
Function NumToPercent#(num#,prosentit#)
prosentit#=prosentit#/100.0
Return num#*prosentit#
EndFunction
'tämä on käänteinen NumToProcent()-funktiolle.
'num# = sama kuin ylemmässä
'prosentit# = desimaaliluku. Esimerkiksi
'num# on 100 ja prosentit# on 5. Siten tulos
'on 5.
Function PercentToNum#(num#,prosentit#)
prosentit#=100.0/prosentit#
Return num#*prosentit#
EndFunction
Function ColorToPixelComp(r,g,b)
Return ( B + (G Shl 8) + (R Shl 16) + (255 Shl 24) )
End Function
Function PixelToColorComp(c,ret)
If ret=1 Then Return ((c Shl 8) Shr 24)
If ret=2 Then Return ((c Shl 16) Shr 24)
If ret=3 Then Return ((c Shl 24) Shr 24)
End Function
EDIT:
Tää koodi oli mulla Funktiot-kansiossa korjasin jo polun
2.Edit: Olisi kiva jos joku pistäisi kommentteja funkkaristani