C# Graphics.textrendinghint属性不为';印刷中的变化

C# Graphics.textrendinghint属性不为';印刷中的变化,c#,printing,gdi+,C#,Printing,Gdi+,我有一个应用程序,它的工作是打印预先存在的标签,因此以精确的方式打印文本非常重要,就像用户在编辑过程中放置文本一样。 我使用GDI+方法来实现这一点 我注意到打印的字体与预览中显示的字体之间存在差异,我发现在打印过程中,无法将Graphics.textrendinghint属性设置为SingleBitPerPixelGridFit以外的任何值。我尝试将TextRenderingHint的值设置为AntiAlias,但它没有改变 下面是一个代码示例: private void printDoc

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

我注意到打印的字体与预览中显示的字体之间存在差异,我发现在打印过程中,无法将Graphics.textrendinghint属性设置为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选项,以使打印文档与预览完全相同


我怎样才能做到这一点呢?

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

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

我尝试将TextRenderingHint的值设置为AntiAlias,但它没有改变。什么意思?设置不正确?或者结果没有改变?我的意思是,即使我用这行代码设置它:
e.Graphics.textrendinghint=System.Drawing.Text.textrendinghint.antialase.Graphics.TextRenderingHint的值始终为SingleBitPerPixelGridFit。这样设置就不起作用了。而且不会消失。你不能像在屏幕上打印像素那样反锯齿打印像素有一种方法可以获得相同的输出,那就是创建一个高分辨率位图,然后打印出来。但是,如果渲染到打印机,GDI+调用将转换为打印机命令,该命令在打印机上使用高分辨率字体,通常不会在监视器上使用我们需要的原始抗锯齿。我尝试将TextRenderingHint的值设置为AntiAlias,但不会更改。什么意思?设置不正确?或者结果没有改变?我的意思是,即使我用这行代码设置它:
e.Graphics.textrendinghint=System.Drawing.Text.textrendinghint.antialase.Graphics.TextRenderingHint的值始终为SingleBitPerPixelGridFit。这样设置就不起作用了。而且不会消失。你不能像在屏幕上打印像素那样反锯齿打印像素有一种方法可以获得相同的输出,那就是创建一个高分辨率位图,然后打印出来。但是,如果渲染到打印机,GDI+调用将转换为打印机命令,该命令在打印机上使用高分辨率字体,通常不会在监视器上使用我们需要的原始抗锯齿。我尝试将TextRenderingHint的值设置为AntiAlias,但不会更改。什么意思?设置不正确?或者结果没有改变?我的意思是,即使我用这行代码设置它:
e.Graphics.textrendinghint=System.Drawing.Text.textrendinghint.antialase.Graphics.TextRenderingHint的值始终为SingleBitPerPixelGridFit。这样设置就不起作用了。而且不会消失。你不能像在屏幕上打印像素那样反锯齿打印像素有一种方法可以获得相同的输出,那就是创建一个高分辨率位图,然后打印出来。但如果渲染到打印机,GDI+调用将转换为打印机命令,该命令在打印机上使用高分辨率字体,通常不使用监视器上需要的基本消除混叠。