3

印刷時に180度反転/回転させたいドキュメントがあります。(これは、プリンターのラベルストックの向きによるものです)。

プロパティPrintDocument.PrinterSettings.LandscapeAngleがありますが、読み取り専用です。

このプロパティはプリンタドライバの影響を受けるため、「設定可能」ではないと思います。

厄介なことを何もしなくても、プリントを180度回転できる良い方法はありますか?

4

4 に答える 4

2

私はそれがあなたが「あまりにも厄介なもの」であるとあなたが定義するものに依存すると思います:-)

PrintDocumentクラスには、これに使用できるGraphicsオブジェクトがあります。このオブジェクトには、必要な場所にあるものを取得できるTranslateTransformメソッドとRotateTransformメソッドがあります

多くの場合、グラフィックスオブジェクトを操作する前にコピーを取り、作業が終わったら元に戻すことができるようにする価値があります。

于 2009-10-27T09:42:57.317 に答える
2

フォームを印刷し、VB.NET で PrintDocument を反転/回転させ、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
于 2012-08-24T09:57:39.993 に答える
2

あなたがしたいPrintDocument.DefaultPageSettings.Landscape

于 2009-01-09T20:56:31.317 に答える
1

プリンターに割り当てる前に、GDIで画像を回転させてみましたか?それが私がしたことです:

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

                }
于 2010-01-26T22:43:59.103 に答える