2

回転行列で ImageSnapshot.captureBitmapData 関数を使用する例はありますか? これは私が使用しているコードです:

var matrix:Matrix = new Matrix();
matrix.rotate(degreesToRadians(90));
var bitmapData:BitmapData = ImageSnapshot.captureBitmapData(textInput, matrix);

残念ながら、これは ImageSnapshot.as の次の行でエラーをスローします。

data = new BitmapData(scaledWidth, scaledHeight, true, 0x00000000); // <-- THROWS ERROR HERE AS scaledWidth / scaledHeight are extremely small numbers (-1-e16 etc)
            data.draw(source, matrix, colorTransform,
                      blendMode, clipRect, smoothing);
        }
        finally
        {
            if (source is IUIComponent)
                finishPrintObject(IUIComponent(source), normalState); // <-- ERROR THROWN HERE, BUT CAUSE OF ERROR IS ABOVE
        }

私が達成しようとしているのは、テキスト入力コントロールの回転したビットマップです (アプリケーションにフォントを埋め込まないようにしています)。このコードは、ビットマップを回転させないときは問題なく動作しますが、回転させた瞬間に壊れます。

回答後編集

私は元の問題でローダークラスを使用していましたが、テキスト 270degrees も必要でした-それを行うテキストは次のとおりです。

var matrix:Matrix = new Matrix();
                        matrix.rotate(Math.PI * 1.5);
                        matrix.translate(0, copyThis.width);

                        var bitmapData:BitmapData = ImageSnapshot.captureBitmapData(copyThis, new Matrix());
                        var rotatedBitmap : BitmapData = new BitmapData(bitmapData.height, bitmapData.width, false, 0xFFFF0000);

                        rotatedBitmap.draw(bitmapData, matrix);

                        loader.load(new Bitmap(rotatedBitmap));

ありがとうございました!

4

1 に答える 1