[關鍵字][Android / setPolyToPoly() / Canvas / Bending Image / Bended Image / Cylindrical shape / Curve Image / Bitmap]

Screen Shot 2015-07-10 at 5.12.34 PM  

你是否想要把自己圖片彎曲成下面這張圖呢?如果你有這樣的需求,

可以參考以下三篇教學~

這張圖,在 Android 裡頭,並沒有很方便的工具,可以快速地將他這樣彎曲,

所以必須由開發者自己處理。我想到的辦法,是由 setPolyToPoly()這個方法,

來慢慢轉變整張圖。所以在這篇我先說明一下 setPolyToPoly() 的用法。

 

第一步我們先看看如何把圖變成這樣:

Screen Shot 2015-07-10 at 10.58.23 PM  

在 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 座標的位置意義如下所標示 

polypoly001  

 所以你應該可以了解所謂 Poly to Poly 的意義,就是原圖的點位,映射到你想要的位置。

 那麼接下來,我們試著進階變化,將圖切分成兩塊,製造變形~

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 keep walking 的頭像
    keep walking

    Winner? Loser? No matter

    keep walking 發表在 痞客邦 留言(0) 人氣()