2012-07-11 67 views
0

我正在將文本繪製到畫布中,並且想要分配一個矩形,以便文本如果到達右手邊界就會中斷並進入下一行。有一個我可以設置的「align」屬性,所以顯然存在右側和中間的概念,但我無法弄清楚如何指定文本框的寬度應該是多少。是否可以用Paint指定一個文本矩形?

TIA

編輯... 我收到我將不得不滾動利用的Paint.breakText方法我自己換行插入法的意義。我*真的希望不是這樣! :)

edit2 .. 因此,除此之外,drawText會忽略\ n並將其作爲[]缺少的字符來繪製。

我已經寫了一個解決方法,將文本的原點移動到每一行,但BOY是這樣的醜陋!

回答

1

Paint.getTextBounds返回由

您的字符串寬度「返回邊界包圍的所有字符的最小矩形(由調用者分配的),與(0,0)的隱含的起源。」

我認爲你很可能需要自己手動繪製字符串

+0

是啊...似乎是這種情況...噢,當我完成後我會發布我的代碼,以防其他人發現它有用 – 2012-07-11 17:49:19

0

您應該使用StaticLayout而不是試圖自行破解文本。它提供了換行。從文檔引用:

除非您正在實現自己的窗口小部件或自定義顯示對象,否則將不需要直接使用此類,否則會試圖直接調用Canvas.drawText()

+0

如何在我的Canvas中繪製一個StaticLayout?我實際上正在輸出一個位圖(將文本添加到用戶已拍攝的照片中)。所以,除非我誤解你,否則我認爲這個解決方案不適用。 – 2012-07-11 04:35:53

+0

@ Dr.Dredel - 父級'Layout'類定義了'draw(Canvas)'方法。您需要將畫布原點轉換爲您希望繪製佈局的位置。 – 2012-07-11 04:36:35

相關問題