2011-05-14 64 views
2

下面是我用于使用BitmapData模糊图像的代码。该函数在Slider_changeHandler(event:Event):void事件上调用,滑块的值作为模糊值传递给该函数。将模糊滤镜应用于BitmapData

问题是功能的作品,但似乎是cummalative(如果这是正确的词!),也就是说,我把它滑到最大,然后尝试通过滑回到前面减少模糊模糊仍然在不断增加。如何使其工作,以便在将其滑动时增加模糊,并且当将其向后滑动时,模糊会减少,并且当滑块处于0时,不会应用模糊。

  var blur:BlurFilter = new BlurFilter(); 
      blur.blurX = blurvalue; 
      blur.blurY = blurvalue; 
      blur.quality = BitmapFilterQuality.MEDIUM; 
      bitmapdata.applyFilter(bitmapdata,new 
       Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(0,0), 
       blur); 
      return bitmapdata; 

回答

5

如何使用应用过滤器返回原始bitmapData的克隆?

例如

var result:BitmapData = bitmapdata.clone(); 
var blur:BlurFilter = new BlurFilter(); 
blur.blurX = blurvalue; 
blur.blurY = blurvalue; 
blur.quality = BitmapFilterQuality.MEDIUM; 
result.applyFilter(result,new 
Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(0,0),blur); 
return result; 

另外,如果你正在使用的BlurFilter,则可能需要更大的矩形,根据模糊的量。为此,您可以使用generateFilterRect()方法为过滤器获取正确大小的矩形。

0

如果我是你,我会走的BitmapData,并把它放在一个位图对象,然后添加过滤器:

var bitmap:Bitmap = new Bitmap(bitmapData); 
var blur:BlurFilter = new BlurFilter(); 
blur.blurX = blurvalue; 
blur.blurY = blurvalue; 
blur.quality = BitmapFilterQuality.MEDIUM; 
bitmap.filters = [blur]; 

通过这样做(交换过滤器阵列),你没有将累积的过滤器。