2011-06-21 62 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