[關鍵字][Android / setPolyToPoly() / Canvas / Bending Image / Bended Image / Cylindrical shape / Curve Image / Bitmap]
你是否想要把自己圖片彎曲成下面這張圖呢?如果你有這樣的需求,
可以參考以下三篇教學~
這張圖,在 Android 裡頭,並沒有很方便的工具,可以快速地將他這樣彎曲,
所以必須由開發者自己處理。我想到的辦法,是由 setPolyToPoly()這個方法,
來慢慢轉變整張圖。所以在這篇我先說明一下 setPolyToPoly() 的用法。
第一步我們先看看如何把圖變成這樣:
在 Source Code 裏頭是這樣寫的:
1: Bitmap generateSimplePolyToPoly(Bitmap originBitmap){
2: // {x1, y1, x2, y2, x3, y3, x4, y4}
3: float[] src = {0, 0, 920, 0, 920, 552, 0, 552};
4: float[] dst = {0, 0, 920, 100, 920, 452, 0, 552};
5:
6: Bitmap combineBm = Bitmap.createBitmap(920, 552, Config.ARGB_8888); // 建立一張 寬 920 高 552 的空白 Bitmap 當作 Canvas 底圖
7: Canvas canvas = new Canvas(combineBm);
8:
9: Matrix matrix = new Matrix();
10: canvas.save();
11: matrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1); // setPolyToPoly
13: canvas.concat(matrix);
14: canvas.drawBitmap(originBitmap, 0, 0, new Paint()); // 將他畫到畫布上
15: canvas.restore();
16:
17: return combineBm;
18: }
x,y 座標的位置意義如下所標示
所以你應該可以了解所謂 Poly to Poly 的意義,就是原圖的點位,映射到你想要的位置。
全站熱搜