C#打印时获得字符串的正确像素宽度高度
来源:互联网 发布:赵本山网络直播视频 编辑:程序博客网 时间:2024/04/29 08:17
转自:http://blog.csdn.net/yourredsun/archive/2008/01/11/2037330.aspx
测量字符串的方法: 于是我用下面的方法使字符串居中显示: 试验结果显示左右是居中的,上下差了3毫米,百思不得其解, //new Font("Arial", 32) 字体下
页面长宽属性:
PrintPageEventArgs.PageBounds 属性 表示页面全部区域的矩形区域。
PrintPageEventArgs.MarginBounds 属性 以百分之一英寸为单位的矩形区域,表示边距以内的页面部分。
PrintPageEventArgs.Graphics.MeasureString 方法 (String, Font)
private void prtDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font strFont = new Font("Arial", 32);
string s = "这是第1页";
e.Graphics.DrawString(s, strFont, Brushes.Green,
(float)e.PageBounds.Width / 2 - e.Graphics.MeasureString(s, strFont).Width / 2,
(float)e.PageBounds.Height / 2 - e.Graphics.MeasureString(s, strFont).Height / 2);
}
后使用中断大法,运行到此句,发现:
//在new Font("Arial", 32) 字体下
//e.Graphics.MeasureString(s, strFont).Height=56.66
无意中发现:
//strFont.Height=50
这是为什么?后据此查msdn得到:
//e.Graphics.MeasureString(s, strFont).Height=56.66 SizeF 相当于SizeF.Height 通常为矩形的宽度和高度,
// 也就是返回一个矩形的覆盖区域
//strFont.Height=50 int 此字体的行距(以像素为单位)。
//行距是两个连续文本行的基线之间的垂直距离。因此,行距包括行间的空白空间及字符本身的高度。详情查阅:Font.Height 属性
//结论:字符的默认覆盖区域的高度比行距还大
//注意:上面获得的宽度也是有细微差别的,准确地要使用格式信息,详情查阅:Graphics.MeasureString 方法 (String, Font)
- C#打印时获得字符串的正确像素宽度高度
- C#打印时获得字符串的正确像素高度,可使字符居中及精确定位
- C# 字符串换行、字符串像素高度、宽度 的结构
- C# 字符串换行、字符串像素高度、宽度 的结构
- 获得手机的宽度和高度像素
- PHP获得字符串的宽度(像素px)
- C# 取字符串像素宽度
- MFC 获取字符串像素高度和宽度
- 【Java基础 007】 获得字符串的宽度和高度
- opencv读取图像,并获得像素值,图像高度和宽度不是4的倍数
- C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
- 获得字符串的宽度
- C#如何获得屏幕宽度和高度
- 获取字符串的像素宽度
- 获取img对象的高度宽度像素
- GDI+获取字符串实际的输出像素值(高度和宽度)
- GDI+ 如何获取字符串实际的输出像素值(高度和宽度)
- 获得qstring字符串的长度(字节长度和所占的像素宽度)
- error C2440: “初始化”: 无法从“DicomImage *”转换为“DicomImage”解决方案
- Eclipse下配置CKEditor3.5.3+CKFinder2.0.2
- 每天一个设计模式之composite
- el表达式--搜索资料
- Android开发视频教学下载地址
- C#打印时获得字符串的正确像素宽度高度
- 安装苹果系统和xcode的经验教训
- 加速系统启动
- 在delphi根据TshiftState值来判断用户按下Ctrl,shift,alt等键的方法
- JTable_test
- C/C++编译预处理指令
- Reapter 中客户端控件和服务器端控件的选择
- XML的解析模式的比较
- 事件驱动