DevAdmin Blog

Blog di Ermanno Goletto (Microsoft MVP Directory Services - MCITP - MCTS - MCSA - MCP)
posts - 887, comments - 447, trackbacks - 13

My Links

News

Avatar

Curriculum Vitae

Visualizza il profilo di Ermanno Goletto su LinkedIn


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo SysAdmin.it SysAdmin.it Staff


Logo TechNet Forum TechNet Italia @ForumTechNetIt Follow TechNet Forum on Twitter


Logo MVP


Ermanno Goletto Follow ermannog on Twitter

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

Stampare un'immagine con .NET

Nel caso sia necessario stampare un'immagine rispettando le dimensioni della stessa e posizionandola in modo preciso sulla pagina il .NET Framework offre nativamente tutto ciò che ci serve. Occorre però fare alcune considerazioni sulle unità di misura che mi annoto a mia futura memoria e per eventaule utilità di altri:

  1.  Per comodità si esprimeranno le misure dei margini che utilizzerò per posizionare l'immagine e le dimensioni della stessa in millimetri.
  2. L'unità di misura dei margini nell'oggetto DefaultPageSettings sono espresse in centesimi di pollice.
  3. Oltre ai magini si deve tenere conto anche degli HardMarginX e HardMarginY espressi anch'essi in centesimi di pollice e che rappresentano i magini fisici della stampante. Gli HardMarginX e HardMarginY sono in margini al di sotto di cui non è possibile scendere e se utilizziamo i margini per posizionare l'immagine occorre ricordare che il margine reale e il margine impostao tramite DefaultPageSettings.Margins più HardMarginX per Left e HardMarginY per Top.
  4. Le dimensioni delle immagini sono date in pixels e dpi (Dots per inch) quindi le dimensioni in pollici saranno Inches = Pixels/DPI che andranno ancora convertite in centesimi di pollice moltilicando per 100.

Di seguito un banale esempio:

Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
   'Impostazione margini left, right, top, bottom
   Util.SetMarginInMillimeters(Me.Document.DefaultPageSettings, 15, 15, 20, 20)

   Me.PrintPreviewDialog.ShowDialog(Me)
End Sub

Private Sub Document_PrintPage(ByVal sender As Object, _
          ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Document.PrintPage
   'Impostazione stampa di una sola pagina
   e.HasMorePages = False

   e.Graphics.DrawImage(My.Resources.Test, _
      e.MarginBounds.Left, e.MarginBounds.Top, _
      Util.PixelsToHundredthsOfInch(My.Resources.Test.Width, My.Resources.Test.HorizontalResolution), _
      Util.PixelsToHundredthsOfInch(My.Resources.Test.Height, My.Resources.Test.VerticalResolution))
End Sub

Per l'esempio completo si veda il seguente link: http://xoomer.alice.it/ermannogoletto/MyLab/TestPrintImageFile.zip
(per scaricarlo in caso di problemi tasto destro -> Salva con nome).

Print | posted on Thursday, November 08, 2007 6:02 PM | Filed Under [ Links Code, Snippets & Scripts .NET ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 6 and 2 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET