Ongelmana on formin tulostuksen himmeys.. Jos näytöstä ottaa normaalin printsceenin ja tulostaa niin jälki on huomattavasti tarkempaa, mutta ohjelman oma tulostus ei miellytä. (Tulostimen asetuksia on kokeiltu moneen lähtöön, mutta ei auta)
Tässä koodia, miten toteutin tulostuksen:
Private PrintPageSettings As New PageSettings()
Private StringToPrint As String
Private PrintFont As New Font("Arial", 10)
Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
ByVal dwRop As System.Int32) As Long
Dim memoryImage As Bitmap
Private Sub CaptureScreen()
Dim mygraphics As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
Dim dc1 As IntPtr = mygraphics.GetHdc
Dim dc2 As IntPtr = memoryGraphics.GetHdc
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
mygraphics.ReleaseHdc(dc1)
memoryGraphics.ReleaseHdc(dc2)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 50, 100)
End SubTulostus painiketta käsketään:
Try
PrintDocument1.DefaultPageSettings = PrintPageSettings
PrintDialog1.Document = PrintDocument1
Dim result As DialogResult = PrintDialog1.ShowDialog()
If result = DialogResult.OK Then
PrintDocument1.Print()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End TryJa tietysti vielä löytyy tietyn objektin takaa:
CaptureScreen()
Osaisiko joku kertoa, miten tuosta saataisiin resoluutio tarkemmaksi? (Kokoahan, korkeus-leveys, ei tarvitse muuttaa.)
Kokeile näitä ennen piirtämistä:
e.Graphics.SmoothingMode =Drawing.Drawing2D.SmoothingMode.AntiAlias
e.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
En kokeillut itse.
Kiitos tnb.
Täytyy viikonloppuna kokeilla tuota.
Ei parantunut tuollakaan...
Olisiko parempia ehdotuksia kellään mielessä?
Vaikka ihan alusta loppuun eritavalla.?
Aihe on jo aika vanha, joten et voi enää vastata siihen.