Масштабирование с помощью BitmapData - PullRequest
0 голосов
/ 02 февраля 2010

Я работаю над приложением, которое позволит пользователю масштабировать изображение. Проблема, с которой я столкнулся при использовании описанного ниже метода, заключается в том, что масштабирование всегда выполняется в предыдущей точке масштаба.

Например: если я увеличу изображение до одного, а затем уменьшу изображение до одного. Я должен уменьшить масштаб в два раза, чтобы вернуть его к той точке, которой я хочу.

Любая помощь в этом с благодарностью.

Вот мой текущий код:

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 Ответ

1 голос
/ 02 февраля 2010

Это выглядит хорошо, я подозреваю, что проблема связана с вашим вводом или местом, где это вызывается.

Чтобы это сработало, события должны происходить в вашем коде следующим образом:

capture input -> scale image -> draw image.

Так как вы, кажется, устанавливаете изображение для рисования в конце этой функции, я бы проверил, что эта функция вызывается после того, как ввод закончил обработку.

Можете ли вы подтвердить, что это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...