簡體   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