2015-05-20 100 views
0

我使用的帆布畫的Android縮放位圖的一部分,有一個形象的1000x500,電話寬480,高800用帆布

垢樣:

 scale = (float) (height/image.getHeight()); 
     image_width = image.getWidth() * scale; 
     image_height = image.getHeight() * scale; 

如何得出這個縮放圖像使用畫布時,只有圖像的中心(屏幕大小)可見,而左側和右側在屏幕外?

+1

我建議你看一看[顯示位圖高效(HTTP:// developer.android.com/training/displaying-bitmaps/index.html) - 你可能不想浪費內存,它可能有助於回答你的問題。 – curtisLoew

回答

2

做這種方式

Rect rs = new Rect(); 
Rect rd = new Rect(); 
rs.left = rs.top = 0; 
rs.right = 480; 
rs.bottom = 800; 

<calculate destination rectangle from device size> 

canvas.drawBitmap(myBitmap, rs, rd, null); 

您也可以縮放和平移(移動)整個畫布

canvas.scale(float scaleX, float scaleY); 
canvas.translate(float dx, float dy); 
+0

這會工作,但我同意@Droid內存中的位圖不應大於目標渲染大小。 – ripple182

+0

canvas.scale(float scaleX,float scaleY);工作得很好,謝謝) – Droid

+0

我已經添加了canvas.scale(x,y),現在它工作得很慢。如果我只繪製一個位圖,它可以正常工作,但如果我添加更多,則它就像幻燈片一樣。如何修復? – Droid