Moin moin
Ich habe hier ein "Problem" beim Ausdruck meines Chart, wenn ich den Hintergrund farbig gestalte.
Bei weißem Hintergrund fällt es kaum auf, das da überall solche Schlieren sind wie bei einem schlecht komprimiertem jpg-Bild.
Als Druckertreiber habe ich den
Gibt es da irgendetwas zu verbessern, so das der PDf-Druck besser wird?
Die Methode wie ich das Chart drucke. Die Methode für die DGV lasse ich hier mal weg.
Spoiler anzeigen
Ich habe hier ein "Problem" beim Ausdruck meines Chart, wenn ich den Hintergrund farbig gestalte.
Bei weißem Hintergrund fällt es kaum auf, das da überall solche Schlieren sind wie bei einem schlecht komprimiertem jpg-Bild.
Als Druckertreiber habe ich den
PDF-XChange Light
installiert.Gibt es da irgendetwas zu verbessern, so das der PDf-Druck besser wird?
Die Methode wie ich das Chart drucke. Die Methode für die DGV lasse ich hier mal weg.
VB.NET-Quellcode
-
- Private Sub Printset()
- Me.WindowState = FormWindowState.Normal
- Me.Height = 650 : Me.Width = 1150
- ' Öffne den Druckdialog
- Dim printDialog As New PrintDialog()
- ' Überprüfe, ob der Benutzer einen Drucker auswählt, bevor der Druck fortgesetzt wird
- If printDialog.ShowDialog() = DialogResult.OK Then
- ' Setze den ausgewählten Drucker für das Druckdokument
- PrintDocMeasureddata.PrinterSettings = printDialog.PrinterSettings
- ' Setze das Seitenformat auf Querformat
- PrintDocMeasureddata.DefaultPageSettings.Landscape = True
- ' Setze den Dokumentnamen
- PrintDocMeasureddata.DocumentName = $"Daten{dataManager.CurDatum.ToString("MMMM yyyy")}"
- ' Drucke direkt
- currentPageIndex = 0 ' Setze den Index zurück, um erneutes Drucken zu ermöglichen
- currentTabPageIndex = 0
- PrintDocMeasureddata.Print()
- End If
- End Sub
- Private Sub PrintDocMeasureddata_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocMeasureddata.PrintPage
- Dim g = e.Graphics
- Dim font As New Font("Segoe UI", 12, FontStyle.Bold)
- Dim dgvList As New List(Of DataGridView) From {DgvStation1, DgvStation2, DgvStation3}
- Dim chartList As New List(Of Chart) From {ChartStation1, ChartStation2, ChartStation3}
- If currentPageIndex < dgvList.Count + chartList.Count Then
- If currentPageIndex < dgvList.Count Then
- Dim currentDGV As DataGridView = dgvList(currentPageIndex)
- ' Titelzeile für DataGridView
- Dim tabPageIndex As Integer = currentPageIndex + 1
- Dim TabData As String = ""
- Select Case tabPageIndex
- Case 1
- TabData = $"Messdaten {ClsSettings.Station1}"
- Case 2
- TabData = $"Messdaten {ClsSettings.Station2}"
- Case 3
- TabData = $"Messdaten {ClsSettings.Station3}"
- End Select
- g.DrawString(String.Format($"Daten {dataManager.CurDatum.ToString("MMMM yyyy")} - {TabData} - {LblAvrTemp} / {LblAvrHumini}"), font, Brushes.Blue, New Point(50, 30))
- ' Drucke DGV-Inhalte
- PrintDGV(currentDGV, g)
- Else
- Dim currentChart As Chart = chartList(currentPageIndex - dgvList.Count)
- ' Titelzeile für Chart
- Dim tabPageIndex As Integer = currentPageIndex + 1 - dgvList.Count + 3 ' Um auf die Indizes 4, 5, 6 zuzugreifen
- Dim TabGraph As String = ""
- Select Case tabPageIndex
- Case 4
- TabGraph = $"Diagramm {ClsSettings.Station1}"
- Case 5
- TabGraph = $"Diagramm {ClsSettings.Station2}"
- Case 6
- TabGraph = $"Diagramm {ClsSettings.Station3}"
- End Select
- g.DrawString(String.Format($"Daten {dataManager.CurDatum.ToString("MMMM yyyy")} - {TabGraph}"), font, Brushes.Green, New Point(50, 30))
- ' Drucke Chart-Inhalte
- PrintChart(currentChart, g, e)
- End If
- ' Erhöhe den Index für die nächste Seite
- currentPageIndex += 1
- ' Erhöhe den Index für die nächste TabPage
- currentTabPageIndex += 1
- ' Setze HasMorePages auf True, wenn es noch mehr Seiten gibt
- If Dummy AndAlso currentPageIndex = 3 Then
- e.HasMorePages = False ' Beende den Druck nach der dritten Seite
- Else
- e.HasMorePages = currentPageIndex < dgvList.Count + chartList.Count
- End If
- ' Wechsel zur nächsten TabPage
- If currentTabPageIndex < TabControl.TabCount Then
- TabControl.SelectedIndex = currentTabPageIndex
- End If
- Else
- ' Es gibt keine weiteren Seiten
- e.HasMorePages = False
- ' Setze den Index zurück, damit der Druck bei Bedarf erneut durchgeführt werden kann
- currentPageIndex = 0
- currentTabPageIndex = 0
- TabControl.SelectedIndex = 0
- End If
- End Sub
- Private Sub PrintChart(curChart As Chart, g As Graphics, e As PrintPageEventArgs)
- Dim chartWidth As Integer = CInt(e.PageSettings.PrintableArea.Width * 1.3)
- Dim chartHeight As Integer = 700 'CInt(chartWidth * 0.9 / 2)
- Dim yPos As Single = 55
- ' Draw the chart
- Using chartImage As New Bitmap(curChart.Width, curChart.Height)
- curChart.DrawToBitmap(chartImage, New Rectangle(0, 0, curChart.Width, curChart.Height))
- g.DrawImage(chartImage, e.MarginBounds.Left - 80, yPos, chartWidth, chartHeight)
- End Using
- End Sub
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.