2011-06-21 58 views
0

我正在使用下面的代码来捕获和打印窗体。问题是它打印出来非常模糊。有什么办法让它打印更清晰?如何在屏幕截图后避免模糊打印?

Imports System.Drawing.Printing 
Public bmp1 As Bitmap 
Private WithEvents printDocument1 As New PrintDocument 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim L, T, W, H As Integer 
    L = form1.Left : T = form1.Top : W = form1.Width : H = form1.Height 

    Dim Bmp0 As New Bitmap(W, H) 
    Dim g0 As Graphics = Graphics.FromImage(Bmp0) 

    g0.CopyFromScreen(L, T, 0, 0, New Size(W, H)) 
    g0.Dispose() 
    bmp1 = New Bitmap(Bmp0, 750, 562) 

    printDocument1.Print() 
End Sub 

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printDocument1.PrintPage 
    e.Graphics.DrawImage(bmp1, 0, 0) 
End Sub 
+0

位图如何在'.Print()'之前查看?也许打印机正在模糊它? – bzlm

+0

[Bitmap.Height和VerticalResolution之间的差异]的可能重复(http://stackoverflow.com/questions/6221359/difference-between-bitmap-height-and-verticalresolution) –

+0

坏墨盒? – N0Alias

回答

1

机会是,您的打印设置(或能力有限)可能是罪魁祸首。

您可以尝试更改您的位图分辨率以查看它是否改善了输出。

bmp1.SetResolution(dpX, dpY) 

使用您的代码打印我自己的窗体,我得到可接受的输出。

或者,也许我们对“非常模糊”的定义是非常不同的。 :-)

+0

将(750,562)更改为(938,703),然后使用bmp1.SetResolution(120,120)是一个巨大的改进。谢谢。 – John