當你變換一個畫布,你實際上是在transformation matrix進行更新,以便後續調用畫將被改造。舉個例子,如果你想「墊」你的畫,你先翻譯畫布:
canvas.translate(10.0f, 0);
,然後上繪製一個矩形(0,0):
canvas.drawRect(0, 0, 20, 10);
矩形會繪製時將其原點轉換爲(10,0),這樣就可以調用drawRect(10, 0)
,因爲每個二維點都乘以當前轉換矩陣。其他affine transformations同樣適用,如旋轉和縮放。所以如果你想繪製顛倒的文字,你必須先應用變形第一個,然後繪畫。
順便說一句,繪製文本實際上顛倒,你正在尋找的轉型不是旋轉,而Y的交換座標:
canvas.scale(1, -1);
canvas.drawText(text, 0, bm.getHeight()/2, paint);
此外,一定要了解Canvas
和Bitmap
之間的區別:前者是用於公開各種繪畫API的Android API類,後者是圖像中實際像素的數組(如我記得直到2.3它從本地庫中分配,所以永遠不要忘記打電話給Bitmap.recycle()
,否則你很快就會結束可用空間d獲得OutOfMemoryException
s。
http://stackoverflow.com/questions/3167928/drawing-rotated-text-on-a-html5-canvas可能有幫助。 –
先旋轉畫布,然後在旋轉的畫布上繪製文字。 – Luis
@Leco隨着旋轉[你仍然沒有得到](http://jsfiddle.net/4dQ9V/)顛倒的文字。看到我的回答如下 – Raffaele