图形.TextRenderingHint属性在打印时不会改变

本文关键字:改变 打印 TextRenderingHint 属性 图形 | 更新日期: 2023-09-27 17:52:35

我有一个应用程序,它的工作是打印预先存在的预打印标签,因此以精确的方式打印文本非常重要,就像用户在编辑过程中放置它时的样子一样。我使用GDI+方法来完成。

我注意到打印字体和预览中显示的字体之间存在差异,并且我发现在打印期间不可能设置图形。TextRenderingHint属性设置为SingleBitPerPixelGridFit以外的任何值。我尝试将TextRenderingHint的值设置为AntiAlias,但它没有改变。

下面是一个示例代码:
  private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
    {
        PrintDocument printDoc = (PrintDocument)sender;
        e.Graphics.PageUnit = GraphicsUnit.Millimeter;
        //I try to set the value of TextRenderingHint to AntiAlias, but it doesn't change
        e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
        string line = "Line of text";
        System.Drawing.Font textFont = new System.Drawing.Font("Arial", 5f, FontStyle.Regular);
        StringFormat sf = new StringFormat(StringFormatFlags.NoWrap);
        e.Graphics.DrawString(line, textFont, Brushes.Black, position.X, position.Y, sf);
    }

我认为我应该使用独立于网格拟合的TextRenderingHint选项,以便使打印的文档与预览完全相同。

我怎么才能做到呢?

图形.TextRenderingHint属性在打印时不会改变

我也遇到过类似的问题。我试图得到ClearTypeGridFit显示,但只有SingleBitPerPixelGridFit显示。我发现我没有在显示设置中启用ClearType。启用ClearType后,TextRenderingHint开始工作。只是检查一下。