奥行きがあるように見えるように、ビットマップをゆがめたい (これが正しい言葉でない場合は訂正してください)。私が求めていることを視覚化する良い方法は、スターウォーズのクレジットがどのように角度を付けて深さを示すかということです.
私は次のことを試しました:
canvas.getMatrix().postSkew(kx,ky,px,py);
と
canvas.skew(sx,sy);
しかし、私はあまり成功していません。上記のメソッドは常にビットマップを平行四辺形に変換するようです。代わりにビットマップを台形に変換する方法はありますか?
これは、Romain が指摘してくれた例から取ったコードのスニペットです。
canvas.rotate(-mOrientation[0] + mHeading, mCenterX, mCenterY);
camera.save();
if (mReverse) {
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
}
camera.rotateX(mOrientation[1]);
camera.applyToCanvas(canvas);
canvas.drawPath(mPath, mPaint);
canvas.drawCircle(mCenterX, mCenterY, mRadius - 37, mPaint);
camera.restore();