背景:使用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!”);//計算字符串的寬度