我創建了一個擴展的RichTextBox,具有更好的圖像顯示支持。簡而言之:我從RTF輸入解析基於文本的圖像佔位符,將它們替換爲具有適當間距(圖像高度)的空白段落,並在文本上方的繪製事件(空間內)中繪製圖像。RichTextBox空間問題
現在的問題是間距似乎是錯誤的。我計算緹用下面的公式:
size.Width = (int)((1440 * size.Width)/graphics.DpiX);
size.Height = (int)((1440 * size.Height)/graphics.DpiY);
哪裏graphics
是從我RichTextBox
和size
是圖像大小。由於DPI值爲96,基本上是twips = 15 * pixels
。
我試着RTF控制字\sbN
和\saN
與我計算的緹值(我用調試器控制它,值如預期)。我還與PFM_SPACEBEFORE
和PFM_SPACEAFTER
進行了互操作。
兩種方式都會得到相同的結果。問題在於RichTextBox內部的真實空間太大。如果我將計算的緹數值乘以0.75就可以了。但我真的不明白爲什麼會發生這種情況。
我的第一個想法是因子72/96(PPI/DPI)是0.75。但這對我來說沒有意義。
附加空間與圖像高度成比例增加。因此,對於小圖標(例如24像素高),空間幾乎不可見。但對於較大的圖像(例如320像素高),額外的空間是巨大的。
有些想法?這是RichTextBox控件中的錯誤嗎?
澄清:我使用System.Windows.Forms.RichTextBox
作爲基類。