首先,問題How to measure width of character precisely?
這是回答,並沒有真正幫助這種情況下,所以這是不是的重複。如何精確測量弦的寬度?
我有一個字符串。我使用graphics.DrawString
進行繪製,但是當我需要在其後面放置另一個後,我需要知道前一個字符串的精確寬度。
爲此,我使用graphics.MeasureString有:
StringFormat format = new StringFormat(StringFormat.GenericTypographic);
format.Alignment = StringAlignment.Center;
format.Trimming = StringTrimming.None;
format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
我已經嘗試了很多其他的功能,就像TextRendered.MeasureText
但是他們都失敗了,以參數的所有可能的組合。
MeasureString的提到的組合最接近我需要的東西(它在大多數情況下工作,除了特殊字符),但是使用像#這樣的字符打斷它。寬度可以更短或更長。
有沒有辦法讓DrawString函數產生精確的文本大小? DrawString如何計算繪圖區域的大小?它必須清楚地表明其他功能,因爲尺寸總是不同的。
整個應用程序的源代碼是在這裏https://gitorious.org/pidgeon/pidgeon-main/(文件,我這個工作,是https://gitorious.org/pidgeon/pidgeon-main/blobs/master/scrollback/SBABox.cs)
可能重複([如何衡量字符串的像素寬度在.NET drawed超過Drawing.Bitmap?] http://stackoverflow.com/questions/2555739/how-to-measure-the-pixel-width-of-the-string-drawed-over-drawing-bitmap-in-net) – 2012-07-29 11:36:23
如果問題沒說清楚MeasureString不工作,這將是重複的 – Petr 2012-07-29 14:49:57
沒有怎樣及何時「它不工作」更好的說明和代碼,包括MeasureString和束帶在一起,這恰恰是不是一個真正的問題。拿出一個小小的測試用具。 – 2012-07-29 16:12:00