我正在製作一個與Google日曆,iCalendar,Outlook日曆類似的日程安排應用程序...正如您可能已經在這些應用程序中看到的那樣,事件以矩形表示,可能非常小,特別是如果您查看整整一週。在一個矩形中包裝字,同時允許單詞被截斷
我的挑戰是在用戶點擊矩形前使用文本,爲用戶提供一個「有意義的總結」。文本應該非常緊湊。爲此,我希望它以一種不常見的方式來包裝行,但我懷疑.NET能夠在本地處理它。
如果一個單詞比矩形寬,只顯示該單詞的開頭。但是如果接下來的單詞會部分落在矩形之外,那麼在遇到空格時仍然應該發生包裝。不是每個空間都會導致下一行的換行,因爲如果有兩個或更多的單詞碰巧適合在一條很好的路線上。
我懷疑答案在於StringFormat,StringTrimming和FormatFlags的功能,但是我沒有找到完成目標的正確組合。
例如,如果我們有...
Chuck Norris
Dentist Appointment
由於篇幅所限,可能成爲...
Chuc
Norr
Denti
Appo
我不希望它變成:
Chuc
k
Norr
is
Dent
ist
Appo
intme
nt
正如你在這個例子中看到的那樣,如果用戶已經知道Chuck Norris是誰,那麼字母「k」和字母「is」的存在不會幫助用戶識別名稱。事實上,這些信件的存在可能會迫使「牙醫預約」被隱藏起來,因爲垂直空間也是有限的。
我已經知道如何在以正常方式包裝的矩形中繪製文本,並且我也知道如何獲取它以避免繪製任何落在矩形之外的文本。我不知道的是如何讓它在遇到空格(或回車)時進行換行,同時防止它包裝中間單詞,如果單個單詞比矩形更寬。有什麼幫助嗎?
我很驚訝還沒有答案。其實我有辦法得到我需要的結果,但我確定它比代碼密集化要求更多,並且它消耗CPU週期。也就是說,我可以循環遍歷整個字符串,反覆檢查文本部分的寬度,用CRLF的一些空格替換,然後渲染文本而不打包。如果沒有人回答這是我會做的,但是當我懷疑在.NET中已經存在的功能時,這似乎是一種浪費。 – PaulOTron2000 2012-02-15 01:49:44