Хочу сделать функцию для создания эффекта ряби на воде. Думаю смотреть надо в сторону pixmap'ов. Как вы считаете стоит ли ее создавать, или такая функция нагрузит процессор? Так же буду рад помощи в создании этой функции...
Type Effect
Field x%, y%, r%, t%, rnx%, rny%, timer%
Field myi%,myj% = 0
Field mypm1:TPixmap,mypm2:TPixmap
Field myimg:TImage
Method Draw()
mypm1=CreatePixmap(r*2,r*2,PF_RGBA8888, 4)
mypm2=CreatePixmap(r*2,r*2,PF_RGBA8888, 4)
mypm1=GrabPixmap(x-r,y-r,r*2,r*2)
For myi=0 To r*2-1
For myj=0 To r*2-1
rnx=10-Rand(5)
rny=10-Rand(5)
If myi+rnx>r*2-1 Then rnx=0
If myj+rnx>r*2-1 Then rnx=0
If myi+rnx<0 Then rnx=0
If myj+rnx<0 Then rnx=0
If myi+rny>r*2-1 Then rny=0
If myj+rny>r*2-1 Then rny=0
If myi+rny<0 Then rny=0
If myj+rny<0 Then rny=0
mypm2.WritePixel(myi,myj,mypm1.ReadPixel(myi+rnx,myj+rny))
Next
Next
DrawPixmap mypm2, x-r+5, y-r+5
EndMethod
Function Create(x%,y%,r%,t%)
Local NewEffect:Effect = New Effect
NewEffect.x=x
NewEffect.y=y
NewEffect.r=r
NewEffect.timer=MilliSecs()
NewEffect.t=t
EffectList.AddLast NewEffect
EndFunction
Method destroy()
EffectList.remove(Self)
EndMethod
EndType
Эффект конечно требует доработки, а так же начинает поддтормаживать при радиусе больше 64 пикселей...