2011-06-21 5 views
0

私は以下のコードを使用して、Windowsフォームをキャプチャして印刷しています。問題は、それが非常にあいまいであることです。より明確に印刷する方法はありますか?スクリーンキャプチャ後にファジー印刷を避けるには?

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) 

コードを使用して自分自身のフォームを印刷すると、許容できる出力が得られます。

"very fuzzy"の定義は、まったく違うかもしれません。 :-)

+0

bmp1.SetResolution(120,120)を使用して(750,562)から(938,703)に変更することは大きな改善です。ありがとう。 – John

関連する問題