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?

War es hilfreich?

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

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;                      

                }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top