سؤال

ولدي وثيقة أريد أن انقلبت / استدارة 180 درجة عند الطباعة. (ويرجع ذلك إلى اتجاه الأسهم التسمية في الطابعة).

وهناك PrintDocument.PrinterSettings.LandscapeAngle الممتلكات ولكن للقراءة فقط.

وأعتقد أن تتأثر هذه الخاصية عن طريق برنامج تشغيل الطابعة، وبالتالي لا 'يمكن ضبطه ".

هل هناك طريقة لطيفة أستطيع أن تدوير الطباعة بنسبة 180 درجة من دون الحاجة إلى القيام بأي شيء مقرف جدا؟

هل كانت مفيدة؟

المحلول

وانا اعتقد ان هذا يتوقف على ما قمت بتعريفها بأنها "شيء مقرف جدا": -)

PrintDocument فئة لديها الكائن الرسومات الذي يمكن استخدامه لهذا، والذي بدوره له TranslateTransform و <أ href ل = "http://msdn.microsoft.com/en-us/library/system.drawing.graphics.rotatetransform.aspx" يختلط = "نوفولو noreferrer"> RotateTransform طريقة من شأنها أن تسمح لك للحصول على الأشياء التي كنت تحتاج لها أن تكون.

وانها غالبا ما يستحق أخذ نسخة من الرسومات وجوه قبل أن التلاعب به حتى تتمكن من استعادتها مرة أخرى عند الانتهاء من ذلك.

نصائح أخرى

وطباعة نموذج والوجه / تناوب على PrintDocument في VB.NET ووضع DefaultPageSettings إلى أفقي

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

هل حاولت قبل تعيين إلى الطابعة GDI تدوير الصورة هو النفس؟ thats ما فعلت:

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

                }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top