62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 根据设置的字体宽度和高度 获取字体大小
/// </summary>
/// <param name="s">字符串容器Size</param>
/// <param name="P_String">字符串内容</param>
/// <param name="sFontName">字体名称</param>
/// <returns></returns>
public Font GetFont(Size s, string P_String, Font oldFont)
{
Bitmap _bitmap = new Bitmap(s.Width, s.Height);
Graphics _graphics = Graphics.FromImage(_bitmap);
float fontsize = 0.1f;
for (Size _size = new Size(); _size.Height <= s.Height ; fontsize += 0.1f)
{
Font font_1 = new Font(oldFont.FontFamily.Name, fontsize);
_size = _graphics.MeasureString(P_String, font_1).ToSize();
}
_graphics.Dispose();
if (oldFont.Bold)
{
return new Font(oldFont.FontFamily.Name, fontsize - 0.2f, FontStyle.Bold);
}
else
{
return new Font(oldFont.FontFamily.Name, fontsize - 0.2f);
}
}
这是我的代码, 原理是根据设定的高度去对比文字的size,直到相同时 获取此时的字体大小,然后在进行
m.Scale((float)(CommonSettings.MillimeterConvertPixel(KuanDu)) / (float)(CommonSettings.MillimeterConvertPixel(GaoDu)), 1.0f, MatrixOrder.Append);
缩放, 这个过程我把像素转换成了毫米,dpi是300算的,打印出来测试并不是我预测的毫米跨度啊,求解??
比如我设置的5毫米,打印出来可鞥只有4,跟缩放有关系?