私個人的には、新しいCanvas
を作成する必要があります。これを行うには、まずビットマップのサイズを変更する必要があります。以下の方法を使用して、ビューのサイズとビットマップのサイズの間のスケールを計算します。
public static float computeScale(float w1, float h1, float w2, float h2) {
if (w1 > 0 && h1 > 0 && w2 > 0 && h2 > 0) {
return Math.max(w1/w2, h1/h2);
}
return 1;
}
だから、規模や新しいビットマップの幅は、高さは以下のコードで計算されます。
float scale = computeScale(viewWidth, viewHeight, bitmapWith, bitmapHeight);
if(scale > 1){
int newWidth = Math.round(bitmapWidth/scale);
int newHeight = Math.round(bitmapHeight/scale);
}
// The code for resizing the source bitmap with the newWidth and newHeight.
// Bitmap newBitmap = ...;
最後に、あなたは新しいCanvas
を作成するために、新しいビットマップを使用します。
Canvas canvas = new Canvas(newBitmap);
質問が正しく表示されているかどうかわかりません。あなたが 'canvas.scale(xScale、yScale)'を呼び出すときにyScale因子をどれだけ設定したいかについては不明ですか?また、キャンバスのサイズを常にデバイスの幅と高さと同じにしますか? –