2016-11-28 8 views
0

BitmapData에 픽셀을 병합, 그리기 및 복사하는 방법이 있지만 비트 맵 인스턴스의 크기를 변경하지 않는 것이 좋습니다.비트 맵 데이터 인스턴스를 만든 후 크기를 변경할 수 있습니까?

var initialWidth:int = 100; 
var initialHeight:int = 100; 
bitmapData = new BitmapData(initialWidth,initialHeight,true,0xFFFFFFFF); 
rectangle = new Rectangle(0, 0, newBitmapData.width, newBitmapData.height); 
bitmapData.merge(newBitmapData, rectangle, new Point(), 0, 0, 0, 0); 
bitmapData.drawWithQuality(newBitmapData, null, null, null, null, false, quality); 
bitmapData.drawWithQuality(LoaderInfo(event.currentTarget).loader, null, null, null, null, false, quality); 
bitmapData.copyPixels(newBitmapData, newBitmapData.rect, new Point()); 
bitmapData.merge(newBitmapData, null, new Point(), 0, 0, 0, 0); 

을하거나 크기를 클립 할 수 있습니다 : 여기

는 지금까지이 무엇인가?

+0

'BtimpaData'를 다시 만들지 않으십니까? – www0z0k

답변

1

짧은 대답은 아니오입니다. 완전성을 위해서

로저 Braunstein 의해 ActionScript 3.0 Bible에서 인용 :

비트 맵의 ​​크기는 건조시에 고정된다. 처음에 선택해야하며 나중에 크기를 변경할 수 없습니다.

비트 맵 데이터를 복사하지 않으려면 표시 객체 마스크를 사용하여 보이는 영역을 클리핑하는 것이 좋습니다.

+0

확인. 나는 가면으로 아무것도 할 수 없다. 나는 또 다른 해결책을 찾아야 할 것이다. 감사합니다 –

+0

당신이 모든 프레임을 여러 번하거나 이미지가 거대하지 않으면 클리핑을 위해 이미지를 복사하는 것이 좋지 않을 수 있습니다 ... –

0

사실 사실은 아니요! 비트 맵 데이터를 다시 만들 수 있지만 너비와 높이는 고정되어 있습니다. 그러나 클립이나 크기가 작은 영역에서 사용하려면 미사용 픽셀을 그대로 두는 것이 좋습니다.

var bmd:BitmapData = new BitmapData(100, 100, true, 0x0); 
bmd.draw(s_omethin_g); 
bmd = clipDown(bmd, new Point(50,50)); 


function clipDown(_bmd:BitmapData, _size:Point):BitmapData { 
    var defaultBmdbound:bitmapData = new BitmapData(_bmd.width, _bmd.height, true, 0x0); 
    var smatrix:Matrix = new Matrix(); 
    smatrix.scale(_size.x/_bmd.width, _size.y/_bmd.height); 
    var resizedBmd:BitmapData = new BitmapData(_size.x, _size.y); 
    resizedBmd.draw(_bmd, smatrix); 
    var rect:Rectangle = new Rectangle(0,0,resizedBmd.width,resizedBmd.height); 
    defaultBmdbound.copyPixels(resizedBmd, rect, new Point()); 
    return defaultBmdbound; 
} 
+0

감사하지만 BitmapData를 다시 만들 수 없습니다. 나는 미리 크기가 없다. 그래서 크기를 얻을 것이다 로더에 바이트 배열 데이터를로드했지만 비트 맵 데이터 인스턴스 크기를 조정할 수 없기 때문에 다른 솔루션을 생각해 내야합니다. –