【发布时间】:2021-10-12 11:20:00
【问题描述】:
我写了这段代码:
private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
Font normalFont = new Font("B nazanin",25);
StringFormat format = new StringFormat(StringFormatFlags.DirectionRightToLeft);
e.Graphics.DrawString("سلام", normalFont, Brushes.Black, 0, 0 , format);
}
private void btnPrint_Click(object sender, EventArgs e)
{
try
{
printPreviewDialog.Document = printDocument;
pageSetupDialog.PageSettings = printDocument.DefaultPageSettings;
pageSetupDialog.ShowDialog();
printDocument.DefaultPageSettings = pageSetupDialog.PageSettings;
printPreviewDialog.ShowDialog();
}
catch
{
MessageBox.Show("error");
}
}
它工作得很好,但问题是它从右到左打印文本,我也需要从右到左打印文档。这样它就不会显示我的文本,因为它将不在我的文档中。
谁能帮帮我?谢谢。
【问题讨论】:
-
StringFormat对象的对齐属性在传递打印位置而不是边界时无效。您需要使用采用Rectangle+StringFormat的重载来避免您在下面的答案中出现的情况。请参阅overloads 和那里的示例。
标签: c# .net visual-studio