RichTextBox空间问题

时间:2016-12-07 13:03:51

标签: c# winforms richtextbox rtf

我创建了一个扩展的RichTextBox,它具有更好的图像显示支持。简而言之:我从RTF输入中解析基于文本的图像占位符,将其替换为具有专有间距(图像高度)的空段落,并在文本上方(空间内)的绘制事件中绘制图像。

现在的问题是间距似乎是错误的。我用下面的公式计算了缇:

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作为基类。

1 个答案:

答案 0 :(得分:0)

好的,我自己发现了错误。我不得不使用图像的DPI值而不是控件的DPI值。图像DPI值为120,因此因子为0.8(不是0.75)。现在它适合。我在这里留下问题,万一有人遇到同样的问题。