0

Canvas.scale(2f,2f) でビットマップを拡大しようとしていますが、そうすると画像が消えます。

これが私のコードです:

    int srcLeft = GodFrameWidth * GodCurAnimation;
    int srcTop = 0;
    int srcRight = (GodFrameWidth * GodCurAnimation) + GodFrameWidth;
    int srcBottom = GodFrameHeight;

    float destLeft = CanvasWidth/2 - GodFrameWidth;
    float destTop = CanvasHeight/2;
    float destRight = destLeft + GodFrameWidth;
    float destBottom = destTop + GodFrameHeight;

    RectF dst = new RectF(destLeft, destTop,destRight ,destBottom );
    Rect src = new Rect(srcLeft,srcTop,srcRight,srcBottom);
    canvas.save();
    canvas.scale(2f, 2f);
    canvas.drawBitmap(GodMap, src, dst,Pencil);
    canvas.restore();

拡大縮小しないと、画面の真ん中に表示されます。

アイデアはありますか?

4

1 に答える 1

0

キャンバスを拡大縮小する前にピボットに変換することをお勧めします。例:

canvas.save();
canvas.translate(50, 50);
canvas.scale(0.5f, 0.5f);
canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint);
canvas.restore();

これは、長さ 5.0、幅 5.0 の長方形を描画し、長さと幅を 2.5 に縮小してから (50, 50) に移動します。コード参照

于 2013-07-15T18:20:19.247 に答える