zoukankan      html  css  js  c++  java
  • 黄聪: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);
    }
  • 相关阅读:
    Centos下安装JAVA
    发布app到appstore的详细步骤
    修改Struts2的struts.xml配置文件位置
    linux 打印当前进程环境变量
    软件复用
    用Delphi开发OPC客户端工具的方法研究
    位图显示地图
    idFTPserver控件实现的ftp 服务器
    电子地图概念
    Tidftp实现自动更新程序
  • 原文地址:https://www.cnblogs.com/huangcong/p/4158700.html
Copyright © 2011-2022 走看看