使用BitmapData进行缩放

时间:2010-02-01 21:58:12

标签: flex actionscript-3

我正在开发一个允许用户缩放图像的应用程序。我在下面的方法中遇到的问题是缩放始终发生在前一个刻度点上。

例如:如果我将图像向上缩放一个,然后将图像缩小一个。我必须缩小两次才能恢复到我想要的程度。

非常感谢任何帮助。

这是我目前的代码:

private var sourceBMD:BitmapData = testImage.source as BitmapData
private var matrixScaleX:Number  = 1;
private var matrixScaleY:Number  = 1;
private var baseScaleX:Number  = .05;
private var baseScaleY:Number = .05;

    private function sourceZoom(zoomType:Boolean = false):void{
        var matrix:Matrix = new Matrix();
        var matriximage:BitmapData;


        if(zoomType){
            matrixScaleX = matrixScaleX + baseScaleX;
            matrixScaleY = matrixScaleY + baseScaleY;
            matrix.a = matrixScaleX;
            matrix.d = matrixScaleY 
        }else{
            matrixScaleX = matrixScaleX - baseScaleX;
            matrixScaleY = matrixScaleY - baseScaleY;
            matrix.a = matrixScaleX;
            matrix.d = matrixScaleY;    
        }


        matriximage = new BitmapData(sourceBMD.width, sourceBMD.height, false, 0x0000000);

        trace('MatrixScaleX: ' + matrixScaleX);
        trace('MatrixScaleY: ' + matrixScaleY);
        trace('BaseScaleX: ' + baseScaleX);
        trace('BaseScaleY: ' + baseScaleY);
        trace('Matrix: ' + ObjectUtil.toString(matrix));

        matriximage.draw(sourceBMD, matrix);                
        testImage.source =  matriximage;    

    }

1 个答案:

答案 0 :(得分:1)

看起来很好,我怀疑问题出在你的输入或者被调用的地方。

为了使其工作,事件需要在代码中发生:

capture input -> scale image -> draw image

由于您似乎在此函数结束时将图像设置为绘制,我将在输入完成处理后检查是否正在调用此函数。

你能确认发生了什么吗?