Wie kann ich ein Printdocument in .NET-Flip / drehen?
-
06-07-2019 - |
Frage
Ich habe ein Dokument, das ich zu blätterte wollen / um 180 Grad gedreht, wenn gedruckt. (Dies ist aufgrund der Orientierung des Etikettenmaterials im Drucker).
Es ist eine Eigenschaft PrintDocument.PrinterSettings.LandscapeAngle
aber es ist nur lesen.
Ich denke, diese Eigenschaft durch den Druckertreiber beeinflusst wird und daher nicht ‚einstellbar‘.
Gibt es eine nette Art, wie ich den Druck um 180 Grad drehen kann, ohne etwas zu böse zu tun zu haben?
Lösung
Ich denke, das hängt davon ab, was man als „etwas zu böse“ zu definieren: -)
Die Printdocument Klasse ein Graphics Objekt können Sie für diese, die in wiederum hat einen und Translatetrans RotateTransform Methode, die Sie Dinge bekommen können, wo Sie müssen sie sein.
Es ist oft lohnt sich eine Kopie der Grafiken aufzunehmenden Objekts, bevor Sie es manipulieren, so dass Sie es wieder wiederherstellen, wenn Sie fertig sind.
Andere Tipps
Sie wollen PrintDocument.DefaultPageSettings.Landscape
drucken Sie eine Form und Flip / drehen, um ein Printdocument in VB.NET und setzen DefaultPageSettings auf Landschaft
Dim WithEvents mPrintDocument As New PrintDocument
Dim mPrintBitMap As Bitmap
Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles mPrintDocument.PrintPage
mPrintBitMap.RotateFlip(RotateFlipType.Rotate90FlipNone)
mPrintDocument.PrinterSettings.DefaultPageSettings.Landscape = True
' Draw the image centered.
Dim lWidth As Integer = e.MarginBounds.X + (e.MarginBounds.Width - mPrintBitMap.Width) \ 2
Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 2
e.Graphics.DrawImage(mPrintBitMap, lWidth, lHeight)
' There's only one page.
e.HasMorePages = False
End Sub
Private Sub B_print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_print.Click
' Copy the form image into a bitmap.
mPrintBitMap = New Bitmap(Me.Width, Me.Height)
Dim lRect As System.Drawing.Rectangle
lRect.Width = Me.Width
lRect.Height = Me.Height
Me.DrawToBitmap(mPrintBitMap, lRect)
' Make a PrintDocument and print.
mPrintDocument = New PrintDocument
mPrintDocument.Print()
End Sub
Sie haben versucht, bevor sie an den Drucker GDI Zuordnung drehen Sie das Bild, um es selbst? das ist, was ich tat:
_currentPage = Image.FromStream((MemoryStream)_queue.Dequeue());
pageHeight = _currentPage.Height;
pageWidth = _currentPage.Width;
if (pageHeight < pageWidth)
{
_currentPage.RotateFlip(RotateFlipType.Rotate90FlipNone);
pageHeight = _currentPage.Height;
pageWidth = _currentPage.Width;
}