.. .. .. ..   ..
BlitzBasic > Codearchiv > GrafikAktuallisiert 30.05.2009

..  Blureffekt - von Triton 
Folgender Code verwischt ein Bild. Es ist nicht unbedingt für Realtime-effekte zu gebrauchen - Bildschirmfüllende Bilder brauchen bei mir schonmal 1 Sekunde. Bei kleineren (bis 100x100 ca) ist es aber auch für Realtime noch ausreichend schnell.

;** Blureffekt 
;** Abtastmuster von 9 Pixeln um Ursprungspixel -> Durchschnitt -> malen 
;** 2003, by Triton 
Graphics 640,480,32,1 
SetBuffer BackBuffer() 

Global pic = LoadImage("bbchvubanner.bmp") 

While Not KeyDown(1) 
If MouseDown(1) Then blur pic 
DrawBlock pic, 0,0 
Color 0,0,0 
Text 0,0, "Maustaste für Blureffekt" 
Color 255,255,255 
Text 1,1, "Maustaste für Blureffekt" 

Flip 
Cls 
Wend 


;---
Function blur(pic) 
SetBuffer ImageBuffer(pic) 
LockBuffer ImageBuffer(pic) 

For x = 0 To ImageWidth(pic)-1 
   For y = 0 To ImageHeight(pic)-1 
      rgb1 = ReadPixelFast(x,y)      ;Mitte 
      rgb2 = ReadPixelFast(x+1,y)      ;Rechts 
      rgb3 = ReadPixelFast(x,y+1)      ;Unten 
      rgb3 = ReadPixelFast(x+1,y+1)   ;Unten-Rechts 
      rgb5 = ReadPixelFast(x-1,y)      ;Links 
      rgb6 = ReadPixelFast(x,y-1)      ;Oben 
      rgb7 = ReadPixelFast(x-1,y-1)   ;Oben-Links 
      rgb8 = ReadPixelFast(x+1,y-1)   ;Oben-Rechts 
      rgb9 = ReadPixelFast(x-1,y+1)   ;Unten-Links 
       
      r1=(rgb1 And $FF0000)/$10000 
      g1=(rgb1 And $FF00)/$100 
      b1=rgb1 And $FF 
         r2=(rgb2 And $FF0000)/$10000 
         g2=(rgb2 And $FF00)/$100 
         b2=rgb2 And $FF 
      r3=(rgb3 And $FF0000)/$10000 
      g3=(rgb3 And $FF00)/$100 
      b3=rgb3 And $FF 
         r4=(rgb3 And $FF0000)/$10000 
         g4=(rgb3 And $FF00)/$100 
         b4=rgb3 And $FF 
      r5=(rgb5 And $FF0000)/$10000 
      g5=(rgb5 And $FF00)/$100 
      b5=rgb5 And $FF 
         r6=(rgb6 And $FF0000)/$10000 
         g6=(rgb6 And $FF00)/$100 
         b6=rgb6 And $FF 
      r7=(rgb7 And $FF0000)/$10000 
      g7=(rgb7 And $FF00)/$100 
      b7=rgb7 And $FF 
         r8=(rgb8 And $FF0000)/$10000 
         g8=(rgb8 And $FF00)/$100 
         b8=rgb8 And $FF 
      r9=(rgb9 And $FF0000)/$10000 
      g9=(rgb9 And $FF00)/$100 
      b9=rgb9 And $FF 
          
       
      rneu#=(r1+r2+r3+r4+r5+r6+r7+r8+r9)/9 
      gneu#=(g1+g2+g3+g4+g5+g6+g7+g8+g9)/9 
      bneu#=(b1+b2+b3+b4+b5+b6+b7+b8+b9)/9 
     rgbneu#=255*$1000000 + rneu#*$10000 + gneu#*$100 + bneu# 
       
      WritePixelFast x,y,rgbneu 
   Next 
Next 

UnlockBuffer ImageBuffer(pic) 
SetBuffer BackBuffer() 
End Function