c# - 奇怪的字体大小变化

标签 c# winforms richtextbox

我今天遇到了一件奇怪的事情,与一起工作.

我创建了一个 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/

相关文章:

c# - TreeView 不显示来自 ImageList 的图像

asp.net - ConfigureAwait(false) 如何防止 Ui 死锁

c# - WPF RichTextBox 标记化编辑

c# - 在 Visual Studio 2010 中的条件断点中使用元组

c# - .NET HttpClient GET 请求在空闲约 100 秒后非常慢

c# - Wininet InternetGetCookie 获取空cookie数据

winforms - FlowLayoutPanel AutoSize 高度不起作用

.net - 键入时自动滚动 DataGridView

c# - System.Windows.Control.RichTextBox 中的错误

c# - 单击 WPF richtextbox 中的 TextBlock