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 Sub
Tulostus 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 Try
Ja 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.