我正在尝试将字符串放在打印文档的中心。我已经用图像完成了以下操作,它可以工作,但似乎与字符串不一样。
这是我用来居中图像的代码
e.Graphics.DrawImage(logo, (e.MarginBounds.Width / 2) - (logo.Width / 2), height);
我试图居中的文本是从 TabControl 中的 Tab 提供的
using (var sf = new StringFormat())
{
height = logo.Height + 15;
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
e.Graphics.DrawString(tabData.Text, new Font(this.Font.Name, 10),
new SolidBrush(tabData.ForeColor),
(e.MarginBounds.Width / 2) - (txtData.Width / 2), height, sf);
}
我也在下面尝试过并使用 string_size.Width /2 代替 txtData.Width
SizeF string_size = e.Graphics.MeasureString(tabData.Text, tabData.Font);
编辑
当前完整代码
float height = 0;
tabData.Text = "Date Range: 02/02/2010 - 08/09/2013"; //set just for testing
using (var logo = Properties.Resources.title)
{
e.Graphics.DrawImage(logo, e.PageBounds.Left + (e.MarginBounds.Width / 2) - (logo.Width / 2), height);
height = logo.Height + 15;
}
using (var sf = new StringFormat())
{
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
e.Graphics.DrawString(tabData.Text, new Font(this.Font.Name, 10), new SolidBrush(tabData.ForeColor), e.PageBounds.Left + (e.PageBounds.Width / 2), height, sf);
}
不明白为什么我必须混合使用 PageBounds 和 MarginBounds 来使图像居中,然后将文本与 MarginBounds 或两个 PageBounds 居中