Bitmap和Canvas的平移 縮放 旋轉

2021-06-20 02:24:58 字數 873 閱讀 1055

matrix matrix = new matrix();

matrix.posttranslate(tx, ty);

matrix.postscale(scale, scale);

canvas.drawbitmap(bmp, matrix, null);

(畫布不動,bmp先平移後縮放,均是相對於原始座標)

<===>(等價)

matrix matrix = new matrix();

matrix.posttranslate(tx, ty);

matrix.postscale(scale, scale);

canvas.concat(matrix);

canvas.drawbitmap(bmp, 0, 0, null);

(bmp不動,畫布concat(s*t),均是相對於原始座標)

<===>(等價)

canvas.scale(scale, scale);

canvas.translate(tx, ty);

canvas.drawbitmap(bmp, 0, 0, null);

(bmp不動,畫布先平移,然後相對原始座標而不是canvas的當前座標縮放,類似drawbitmap(bmp, matrix, null);

也可以這麼理解,先縮放,然後相對與canvas的當前座標平移)

注意:canvas,直接操作(t/s/r),可以這樣理解(兩種)

1、後一次操作(後一次呼叫)是在前一次的基礎之後再操作

2、畫布後一次的操作(後一次呼叫)先執行,前一次操作後執行,但是都是相對於原始座標

對於concat,先分解,比如分解成s*t,則是先s,然後在s的基礎上t;或者也可以這樣理解:先t後s,但是是在原始座標基礎上

Drawable和Bitmap的轉換

很多開發者表示,不知道android的drawable和bitmap之間如何相關轉換。下面android123給大家兩種比較簡單高效的方法。一 bitmap轉drawable bitmap bm 根據你的情況獲取 bitmapdrawable bd bitmapdrawable bm android...

Bitmap的載入和Cache

載入bitmap bitmapfactory decodefile decoderesource decodestream decodebytearray 高效載入bitmap的核心思想 採用bitmapfactory.options,使用insamplesize 取樣率 引數來縮放 若為1則取樣後...

BitMap的原理和實現

32位機器上,對於乙個整型數,比如int a 1,int佔4位元組,1位元組 8位 1 byte 8 bit 佔32bit位。如果每個數字用int儲存,那就是20億個int,因而占用的空間約為 2000000000 4 1024 1024 1024 7.45g 如果按位儲存就不一樣了,20億個數就是...