2

私のコードはマトリックスを使用して画像を翻訳しようとしています

Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.calednder_c);

Matrix matrix = new Matrix();

matrix.setTranslate(500,300 );
Bitmap rotated = Bitmap.createBitmap(myImg, 0, 0, myImg.getWidth(), myImg.getHeight(),
        matrix, true);

circle.setImageBitmap(rotated);

私がアニメーションメソッドを呼び出しているときは何も起こりません。私が書いpreRotate(angle);ている間、それは回転し、それもスケーリングしますが、なぜ私が欠けているのかを翻訳しません

前もって感謝します

4

1 に答える 1

1

createBitmapソースコードからのそれぞれのスニペットは次のとおりです。

final boolean transformed = !m.rectStaysRect();

RectF deviceR = new RectF();
m.mapRect(deviceR, dstR);

neww = Math.round(deviceR.width());
newh = Math.round(deviceR.height());

bitmap = createBitmap(neww, newh, transformed ? Config.ARGB_8888 : newConfig,
        transformed || source.hasAlpha());

canvas.translate(-deviceR.left, -deviceR.top);
canvas.concat(m);

paint = new Paint();
paint.setFilterBitmap(filter);
if (transformed) {
    paint.setAntiAlias(true);
}

作成されたビットマップは、元のビットマップから必要なすべてのピクセルを保持するのに十分な大きさになります。これは、新しいサイズとcanvas.translate呼び出しが原因です。

最終的な効果は、マトリックス内の変換が無視されることです。

于 2013-01-04T13:28:16.653 に答える