2016-12-07 85 views
0

我創建了一個擴展的RichTextBox,具有更好的圖像顯示支持。簡而言之:我從RTF輸入解析基於文本的圖像佔位符,將它們替換爲具有適當間距(圖像高度)的空白段落,並在文本上方的繪製事件(空間內)中繪製圖像。RichTextBox空間問題

現在的問題是間距似乎是錯誤的。我計算緹用下面的公式:

size.Width = (int)((1440 * size.Width)/graphics.DpiX); 
size.Height = (int)((1440 * size.Height)/graphics.DpiY); 

哪裏graphics是從我RichTextBoxsize是圖像大小。由於DPI值爲96,基本上是twips = 15 * pixels

我試着RTF控制字\sbN\saN與我計算的緹值(我用調試器控制它,值如預期)。我還與PFM_SPACEBEFOREPFM_SPACEAFTER進行了互操作。

兩種方式都會得到相同的結果。問題在於RichTextBox內部的真實空間太大。如果我將計算的緹數值乘以0.75就可以了。但我真的不明白爲什麼會發生這種情況。

我的第一個想法是因子72/96(PPI/DPI)是0.75。但這對我來說沒有意義。

附加空間與圖像高度成比例增加。因此,對於小圖標(例如24像素高),空間幾乎不可見。但對於較大的圖像(例如320像素高),額外的空間是巨大的。

有些想法?這是RichTextBox控件中的錯誤嗎?

澄清:我使用System.Windows.Forms.RichTextBox作爲基類。

回答

0

好吧,我自己找到了錯誤。我不得不使用圖像的DPI值而不是控件的DPI值。圖像DPI值是120,因此是0.8(不是0.75)。現在它適合。如果有人遇到同樣的問題,我在這裏留下問題。