繁体   English   中英

奇怪的FontSize改变

[英]Strange FontSize change

我今天遇到了一个奇怪的事情,与

我创建了一个RichTextBox ,其默认FontSize为14.25 pt。

我正在执行一些操作,我需要创建临时的RichTextBox ,我从我的原始RichtextBox复制了所选的文本。 在那之后,在没有我做出任何改变的情况下,整个tempRichTextBox文本的字体大小正好增加了0.25磅 每一封信。 那是一些错误还是什么?

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的步长变化。 它与DPI和字体大小单位有关。

因此,实施公式考虑到这一点,你应该开始获得更可取的结果。 请注意,在FontDialog和RTB的上下文中,DPI或字体大小单位可能不同。

这太有趣了。 我没有答案为什么,但差异重复每3磅字体大小。

void btn_Click(object sender, EventArgs e) {
    StringBuilder sb = new StringBuilder();
    richTextBox.Text = "asdf";
    for (int i = 24; i <= 100; i++) {
        using (Font f = new Font(SystemFonts.DefaultFont.FontFamily, 1f * i / 4)) {
            richTextBox.SelectAll();
            richTextBox.SelectionFont = f;
            richTextBox.Font = f;
            sb.AppendLine(f.Size + "\t" + richTextBox.SelectionFont.Size + "\t" + Math.Round(f.Size - richTextBox.SelectionFont.Size, 3));
        }
    }
}

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM