【问题标题】:VB.NET Textboxes come out fuzzy upon converting to a Bitmap imageVB.NET 文本框在转换为位图图像时变得模糊
【发布时间】:2017-12-20 20:37:40
【问题描述】:

我的应用程序充当带有文本框的文档模板供用户填写。完成后,他们可以使用 PDFsharp 将文档“打印”为 PDF。这是通过使用下面的代码将文本框所在的面板转换为位图图像来完成的;

                ConditionReportConfig.PG1.Panel2.DrawToBitmap(Bitmap, New Rectangle(0, 0, Bitmap.Width, Bitmap.Height))
                frm_MsgPrint.lbl_Page.Text = "Page: 1" : frm_MsgPrint.lbl_Page.Refresh()
                frm_MsgPrint.PictureBox1.Image = Bitmap
                frm_MsgPrint.PictureBox1.Refresh()
                BXImage = Bitmap
                GFX.ScaleTransform(0.82)
                GFX.DrawImage(BXImage, 25, 0)
                GFX.Dispose()
                CDR1 = Nothing

不幸的是,当 PDF 与图像一起弹出时,整个图像,尤其是文本框中的文本,都是模糊的。它们不会模糊到您无法阅读的程度,但它们确实会使您的眼睛阅读文本变得异常紧张。

我尝试添加各种设置,例如:

                Dim Bitmap2 = New Bitmap(894, 1367)
                Using G As Graphics = Graphics.FromImage(Bitmap2)
                    G.InterpolationMode = Drawing2D.InterpolationMode.Bicubic
                    G.DrawImage(Bitmap, 0, 0, 120, 150)
                End Using

我什至尝试更改字体、大小,甚至将位图保存为 TIFF、PNG,但它仍然显得模糊。我会更改打印方法,但要打印面板的全部内容。不仅如此,面板还包含图像,所以我不能只在 PDF 上打印文本。

编辑: 我已经尝试更改一些插值设置,它稍微清晰一些,但仍然对您的眼睛造成压力。 下面是作为 TIFF 的位图图像的 sn-p。注意文本框中的文本是“模糊的”,但旁边的垂直文本是完美的。真的没有办法让文本框内容像竖排文本一样清晰吗?

清晰的垂直文本的模糊图像:

【问题讨论】:

  • 控件以在 LCD 显示器上有用的方式呈现其文本。通常使用 ClearType 抗锯齿,在字母形状周围使用红色和蓝色条纹。在显示器上效果很好。在纸上效果不佳。您必须停止使用 DrawToBitmap() 才能取得成功。
  • 您对 DrawToBitmap() 的替代方案有什么建议吗?我似乎找不到任何可以将面板控件变成图像的东西
  • 只要您将面板的绘制代码保存在一个单独的方法中,该方法接受一个 Graphics 参数,以便您也可以调用它进行打印,那么您就可以到达某个地方。

标签: vb.net pdf bitmap pdfsharp


【解决方案1】:

从您的位图中创建一个XImage 并设置

image.Interpolate = false;

对于该图像。这是 Adob​​e Reader 不平滑图像的提示。

在将图像添加到 PDF 之前,还要检查 ClearType 是否不会使图像模糊。

【讨论】:

  • 事实证明图像本身在添加到 PDF 本身之前已经模糊,插值确实有帮助,但图像仍然会导致严重的眼睛疲劳。我添加了一个屏幕截图来说明我的意思
  • 水平文本的彩虹色模糊是 ClearType 的结果。 ClearType 不用于垂直文本。
猜你喜欢
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2013-05-28
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多