Question

Je souhaite retourner un document / pivoter à 180 degrés lors de l'impression. (Cela est dû à l'orientation du stock d'étiquettes dans l'imprimante).

Il existe une propriété PrintDocument.PrinterSettings.LandscapeAngle mais elle est en lecture seule.

Je pense que cette propriété est influencée par le pilote d'imprimante et n'est donc pas "configurable".

Existe-t-il un moyen agréable de faire pivoter l’impression de 180 degrés sans rien faire de trop méchant?

Était-ce utile?

La solution

Je suppose que cela dépend de ce que vous définissez comme "quelque chose de trop méchant". : -)

La classe PrintDocument a une objet Graphics que vous pouvez utiliser pour cela, lequel turn a un TranslateTransform et RotateTransform , méthode qui vous permettra d'obtenir des résultats où besoin d'eux.

Il est souvent utile de prendre une copie de l'objet graphique avant de le manipuler afin de pouvoir le restaurer une fois que vous avez terminé.

Autres conseils

imprimer un formulaire et retourner / faire pivoter un PrintDocument dans VB.NET et définir DefaultPageSettings sur paysage

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

avez-vous essayé avant de l'attribuer à l'imprimante GDI faire pivoter l'image elle-même? c'est ce que j'ai fait:

                _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;                      

                }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top