C#計算字符串的寬度

7 篇文章 0 订阅

背景:使用easyUI dataGrid後臺數據庫分頁加載數據,慢,超過5S,原因是未指定寬度,使用自適應屬性。由於我的Columns值是動態加載的,所以我就在後臺把字段的寬度計算出來,用json格式傳遞到前臺

Font裏面可以設置字體和字體大寫,這樣計算出來的寬度會更准確點

using System;
using System.Data;
using System.Text; 
using System.Drawing;  
using System.Collections.Generic;  
public class Width
      {
            public static int CharWidth(string str)
            {
                int charWidth = 0;
                using (Bitmap image = new Bitmap((int)Math.Ceiling(str.Length * 9.5), 22))
                {
                    using (Graphics g = Graphics.FromImage(image))
                    {
                        //字體的大小動態的,你可以改字體(Arial)或 字體大小(10)的值,這樣獲得的寬度也會不一樣
                        Font font = new Font("Arial", 10, (FontStyle.Bold | FontStyle.Italic));
                        System.Drawing.SizeF sizef = g.MeasureString(str, font);
                        charWidth = (int)sizef.Width;
                    }

                    return charWidth;
                }
            }
      }

調用方式:靜態方式,不需要實例化。 Width.CharWidth(“哈嘍 World!”);

str = "哈嘍 World!";
int length = str.Length;//計算字符串的長度
int countOfBytes = System.Text.Encoding.Default.GetByteCount(str);//获取字符串字节数
int strWidth = Width.CharWidth(“哈嘍 World!”);//計算字符串的寬度

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值