我没有接触过GDI,麻烦大家给我看看.下面是我从另外一帖得到的代码,用途是获取字体的宽度.我把它用在asp.net网页上时得到的宽度总是大于我用脚本scrollWidth取得的宽度,尤其是汉字特别明显.比scrollWidth取得宽度多10%左右private SizeF MeasureStringSizeF(Graphics grOff, string str,Font font)
{
if (String.IsNullOrEmpty(str))
return new SizeF(0, 0);
if (str == " ")
str = "1";
SizeF sizeF = grOff.MeasureString(str, font);
RectangleF layoutRect = new RectangleF(0, 0, sizeF.Width, sizeF.Height);
StringFormat stringFormat = new StringFormat();
CharacterRange[] characterRanges = { new CharacterRange(0, str.Length) };
stringFormat.SetMeasurableCharacterRanges(characterRanges);
Region[] stringRegions = grOff.MeasureCharacterRanges(str, font, layoutRect, stringFormat);
RectangleF measureRect = stringRegions[0].GetBounds(grOff);
return new SizeF(measureRect.Width, measureRect.Height);
}
{
if (String.IsNullOrEmpty(str))
return new SizeF(0, 0);
if (str == " ")
str = "1";
SizeF sizeF = grOff.MeasureString(str, font);
RectangleF layoutRect = new RectangleF(0, 0, sizeF.Width, sizeF.Height);
StringFormat stringFormat = new StringFormat();
CharacterRange[] characterRanges = { new CharacterRange(0, str.Length) };
stringFormat.SetMeasurableCharacterRanges(characterRanges);
Region[] stringRegions = grOff.MeasureCharacterRanges(str, font, layoutRect, stringFormat);
RectangleF measureRect = stringRegions[0].GetBounds(grOff);
return new SizeF(measureRect.Width, measureRect.Height);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货