2011-05-14 2 views
2

다음은 BitmapData를 사용하여 이미지를 흐리게 처리하는 데 사용하는 코드입니다. 이 함수는 Slider_changeHandler(event:Event):void 이벤트에서 호출되며 슬라이더의 값은 blurvalue 함수로 전달됩니다.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() 메서드를 사용하여 필터에 맞는 크기의 사각형을 얻을 수 있습니다. (필터 배열 상호 교환) 이렇게

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

을, 당신은 제작하지 않는 : 너 I, I는의 BitmapData을 가지고 비트 맵 객체에 넣어 줄 경우

0

, 다음 필터를 추가 누적 필터.