Torna al Thread
Private Sub PulSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PulSalva.Click
sender.focus() ' ricevo il fuoco non va in automatico su una picture
' saveFileDialog1.InitialDirectory = "c:\" da sistemare
'saveFileDialog1.RestoreDirectory = True
SaveFileDialog1.FileName = DocumentoPrint.DocumentName
SaveFileDialog1.Filter = "Immagine BMP|*.BMP|Immagine GIF|*.GIF |Immagine Tiff|*.tiff|Immagine JPG|*.jpg"
SaveFileDialog1.FilterIndex = 4
SaveFileDialog1.Title = "Salva Conto come Immagine"
SaveFileDialog1.OverwritePrompt = False
SaveFileDialog1.ShowDialog()
PrintDocumentToImage(DocumentoPrint, SaveFileDialog1.FileName.Remove(SaveFileDialog1.FileName.Length - 4, 4), SaveFileDialog1.FilterIndex)
End Sub
Private Sub PrintDocumentToImage(ByVal DocumentoPrint As Printing.PrintDocument, ByVal Filename As String, ByVal FilterIndex As Integer)
Dim controller As New Printing.PreviewPrintController
controller.UseAntiAlias = False
DocumentoPrint.PrintController = controller
DocumentoPrint.Print()
Dim FilenameA As String = ""
Dim FormatoImmagine As Drawing.Imaging.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
Dim pages As Printing.PreviewPageInfo() = controller.GetPreviewPageInfo()
Dim IndexPag As Integer
Select Case FilterIndex
Case 1 'bmp
For IndexPag = 0 To pages.Length - 1
FilenameA = String.Format("{0}-{1}.bmp", Filename, IndexPag)
RicavaImmagine(pages(IndexPag).Image, FilenameA, DocumentoPrint.DefaultPageSettings.PaperSize.Height, DocumentoPrint.DefaultPageSettings.PaperSize.Width, CmPx.Pixel, 150, DocumentoPrint.DefaultPageSettings.Landscape, Drawing.Imaging.ImageFormat.Bmp)
Next IndexPag
Case 2 'gif
For IndexPag = 0 To pages.Length - 1
FilenameA = String.Format("{0}-{1}.gif", Filename, IndexPag)
RicavaImmagine(pages(IndexPag).Image, FilenameA, DocumentoPrint.DefaultPageSettings.PaperSize.Height, DocumentoPrint.DefaultPageSettings.PaperSize.Width, CmPx.Pixel, 150, DocumentoPrint.DefaultPageSettings.Landscape, Drawing.Imaging.ImageFormat.Gif)
Next IndexPag
Case 3 ' da sistemare Tiff
For IndexPag = 0 To pages.Length - 1
FilenameA = String.Format("{0}-{1}.tiff", Filename, IndexPag)
RicavaImmagine(pages(IndexPag).Image, FilenameA, DocumentoPrint.DefaultPageSettings.PaperSize.Height, DocumentoPrint.DefaultPageSettings.PaperSize.Width, CmPx.Pixel, 150, DocumentoPrint.DefaultPageSettings.Landscape, Drawing.Imaging.ImageFormat.Tiff)
Next IndexPag
Case 4 'jpg
For IndexPag = 0 To pages.Length - 1
FilenameA = String.Format("{0}-{1}.jpg", Filename, IndexPag)
RicavaImmagine(pages(IndexPag).Image, FilenameA, DocumentoPrint.DefaultPageSettings.PaperSize.Height, DocumentoPrint.DefaultPageSettings.PaperSize.Width, CmPx.Pixel, 150, DocumentoPrint.DefaultPageSettings.Landscape, Drawing.Imaging.ImageFormat.Jpeg)
Next IndexPag
End Select
End Sub
Private Function RicavaImmagine(ByVal Immagine As Drawing.Image, ByVal NomeFile As String, ByVal Altezza As Integer, ByVal larghezza As Integer, ByVal MmoPixel As CmPx, ByVal Dpi As Integer, ByVal landscape As Boolean, ByVal FormatoImmagine As System.Drawing.Imaging.ImageFormat) As Boolean
If landscape = True Then
Dim AltezzaLarghezza As Integer = 0
AltezzaLarghezza = Altezza
Altezza = larghezza
larghezza = AltezzaLarghezza
End If
If MmoPixel = CmPx.Cm Then
Altezza = Altezza / 2.54 * Dpi
larghezza = larghezza / 2.54 * Dpi
End If
Dim nuova_immagine As New Bitmap(larghezza, Altezza)
Dim temp As Graphics = Graphics.FromImage(nuova_immagine)
temp.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
temp.DrawImage(Immagine, New Drawing.Rectangle(0, 0, larghezza, Altezza), New Drawing.Rectangle(0, 0, Immagine.Width, Immagine.Height), GraphicsUnit.Pixel)
nuova_immagine.Save(NomeFile, FormatoImmagine)
'riliasciare gli oggetti caricati in memoria
temp.Dispose()
nuova_immagine.Dispose()
End Function