2013-01-04 55 views
2

我想用我的矩陣代碼翻譯一個圖像是
翻譯使用矩陣的Android

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);它旋轉,它也而非規模翻譯爲什麼什麼我缺少

在此先感謝

回答

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呼叫造成的。

最終結果是忽略矩陣中的翻譯。