我今天遇到了一件奇怪的事情,与winforms一起工作.
我创建了一个 RichTextBox
,默认 FontSize
为 14.25 pt。
我正在执行一些操作,我需要创建临时的 RichTextBox
,我已经从我的原始 RichtextBox
中复制了选定的文本。之后,在我没有做任何更改的情况下,整个 tempRichTextBox 文本的字体大小正好增加了 0.25 pt。每一个字母。这是一些错误还是什么?
using (RichTextBox tempRichTextBox = new RichTextBox())
{
tempRichTextBox.Rtf = this.richTextBox.SelectedRtf;
int tempStart = this.richTextBox.SelectionStart;
int tempLength = this.richTextBox.SelectionLength;
for (int i = 0; i < tempLength; i++)
{
tempRichTextBox.Select(i, 1);
this.baseSize = tempRichTextBox.SelectionFont.Size;
}
tempRichTextBox.Select(0, tempLength);
this.richTextBox.SelectedRtf = tempRichTextBox.SelectedRtf;
this.richTextBox.Select(tempStart, tempLength);
}
有人知道为什么会这样吗?
最佳答案
我发现 WinForms 增加了字体大小(或有时从中减去)0.25
。您在设计器中看到 14.25
,但它是实现的,因为值 14
最初存储在那里。我在单独使用 FontDialog 系统对话框时也看到了这种情况。您选择字体大小 8,然后在返回的 Font 对象中找到 8.25。在某些尺寸上,我发现了 14.75 而不是 15。但它并没有随着字体大小的增加而增长,即你会发现字体大小 = 5000 时同样的小差异。
原因:字体大小以 0.75 为步长变化。 It is related to DPI and font size units.
因此,在实现公式时考虑到这一点,您应该会开始获得更符合预期的结果。请注意,DPI 或字体大小单位在 FontDialog 和 RTB 的上下文中可能不同。
关于c# - 奇怪的字体大小变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554281/