黃聰:C#如何通過MeasureString、Graphics獲取字符串的像素長度


1、    使用g.MeasureString()獲得

使用MeasureString測量出來的字符寬度,總是比實際寬度大一些,而且隨着字符的長度增大,貌似實際寬度和測量寬度的差距也越來越大了。查了一下MSDN,找到了下面這個理由:MeasureString 方法旨在與個別字符串一起使用,它在字符串前后包括少量額外的空格供突出的標志符號使用。

string str;
str = "";
Font f = new Font("SimSun", 7F, System.Drawing.FontStyle.Regular);
Graphics g = this.CreateGraphics();

//單位為mm
g.PageUnit = GraphicsUnit.Millimeter;
SizeF sim = g.MeasureString(str, f);

 

2、使用TextRenderer.MeasureText獲得,提供使用指定尺寸創建文本初始邊框時,使用指定的設備上下文、字體和格式說明所繪制的指定文本的尺寸(以像素為單位)。

private void MeasureText(PaintEventArgs e) 
{
            string str;
            str = "大家好";
            Font f = new Font("SimSun", 7F, System.Drawing.FontStyle.Regular);
            Size sif = TextRenderer.MeasureText(e.Graphics, str, f, new Size(0, 0), TextFormatFlags.NoPadding);
            MessageBox.Show((sif.Width / pdi).ToString());
}

private void print(object sender, PaintEventArgs e)
{
            MeasureText(e);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM