日期:2014-05-18 浏览次数:21134 次
// 获取字符串.
// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r\n aaaaaaaa bbbbbbbbbbb ccccccccccccccc \r\n dddddddddd
// 某些行字符串 过长。
StringReader lineReader = new StringReader(this.GetPrintSB().ToString());
// 获得绘图对象
Graphics g = e.Graphics;
// 定义字体
Font titleFont = new Font("宋体", 9, FontStyle.Bold);
// 画刷
Brush brush = new SolidBrush(Color.Black);
// 行数,用于计算当前高度。
int count = 0;
/*
* 网上查 说可以 自动换行. 但是我使用后没什么反应。不知道是不是用错了..
* 使用 Rectangle 是可以换行.. 不过每行长度不一样。高度 很难控制(并且ReadLine 下1行字符串打印的预定高度会变形)。
* 而且会按单词换行。
*/
StringFormat fmt = new StringFormat();
fmt.LineAlignment = StringAlignment.Center;
fmt.FormatFlags = StringFormatFlags.LineLimit;
float topMargin = e.MarginBounds.Top; // 上边距
float leftMargin = 10; // 左边距
while((line=lineReader.ReadLine()) != null)
{
// DrawString方式进行打印。
yPosition = topMargin + (count * titleFont.GetHeight(g));
g.DrawString(line, titleFont, brush ,leftMargin, yPosition, fmt);
count++;
}