Stampare una picturebox tramite codice....

martedì 28 novembre 2017 - 12.45
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010

e444 Profilo | Newbie



Non riesco a capire come fare...

Ho una "bmp" nel "My.Resources", ed ho la necessità di farlo uscire in stampa su coordinate precise...

Qualcuno può aiutarmi?
Grazie.

Peppino Profilo | Junior Member

Ciao.
Non so che cosa usi per la programmazione. Se per la stampa usi PrintDocument in Visual Studio, allora
per aiutarti, ti allego un esempio funzionante in cui puoi prendere spunto per iniziare. Diversamente di sicuro ci sarà qualcun'altro più esperto di me
che ti dirà come fare.
Fammi sapere. Ciao. Peppino.

e444 Profilo | Newbie

Allora...

Si... uso Visual Studio 2010 e il tutto è tramite il PrintDocument...

Ora vedo cosa mi hai mandato... e ti faccio sapere.

Grazie per ora per il tuo aiuto.

e444 Profilo | Newbie

Non mi si apre nulla...


1359x716 207Kb


Che faccio??

Peppino Profilo | Junior Member

Ciao. E' strano, forse perché lo creato con Visual Studio 2017 Community. Ma ti doveva dare l'errore in tal senso.
Comunque da Visual Studio, crea nuovo progetto, apri la Form1 in modalità progettazione e dalla casella degli strumenti ci trascini dentro:
PrintDocument, PrintDialog e PrintPreviewDialog
n. 4 NumericUpDown uno per impostare il margine superiore dell'immagine, uno per impostare il margine sinistro dell'immagine, uno per impostare la larghezza
dell'immagine e l'altro per impostare l'altezza dell'immagine. Siccome sono impostati a zero, vai nella proprietà 'Value' di ognuno e gli dai le misure che
desideri. Io per default gli ho dato in ordine i seguenti valori: margine superiore 30, margine sinistro 30, larghezza 250 e altezza 200. Prima sempre nella
proprietà di ognuno devi aumentare il valore 'Maximum' con un valore maggiore di quello che dovresti dare nella proprietà 'Value'. Per ognuno gli porti
accanto una Label con scritto nella proprietà 'Text' la descrizione abbinata per ricordarti quale valore stai dando.
n. 1 PictureBox, n. 3 Button il primo gli dai il nome BtnAnteprima e nella proprietà 'Text' scrivi Anteprima di Stampa, il secondo gli dai il nome BtnStampa e
nella proprietà 'Text' scrivi Stampa e il terzo gli dai il nome BtnChiudi e nella proprietà 'Text' scrivi Chiudi. Fai click su tutti e
tre i Button. Apri la Form1 in modalità inserimento codice e completa il codice cosi com'è di seguito.

Imports System.Data.SqlClient
Imports System.Drawing.Printing

Public Class Form1
Inherits System.Windows.Forms.Form

<STAThreadAttribute()>
Public Shared Sub Main()
Try
Application.EnableVisualStyles()
Application.Run(New Form1)
Catch e As Exception
MessageBox.Show(e.Message & e.StackTrace)
End Try
End Sub

Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

''' <summary>
''' Il controllo Anteprima di Stampa è associato a PrintDocument e quando viene eseguito
''' il rendering dell'anteprima, viene generato l'evento PrintPage. Questo evento viene passato a un
''' contesto grafico in cui "disegna" la pagina.
''' </summary>
Private Sub BtnAnteprima_Click(sender As Object, e As EventArgs) Handles BtnAnteprima.Click
Try
Dim PrinDocument1 As New PrintDocument()

' Orientamento della stampa orizontale impostata su (false).
PrintDocument1.DefaultPageSettings.Landscape = False

PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()

Catch ex As Exception
MessageBox.Show("Questo errore è nell'applicazione: " & ex.Message.ToString(), "Attenzione!")
End Try
End Sub

''' <summary>
''' Il controllo Stampa consente all'utente di selezionare la stampante che desidera utilizzare per stampare,
''' nonché altre opzioni di stampa.
''' </summary>
Private Sub BtnStampa_Click(sender As Object, e As EventArgs) Handles BtnStampa.Click
Dim PrinDocument1 As New PrintDocument()

' Set the page orientation to landscape(false).
PrintDocument1.DefaultPageSettings.Landscape = False

PrintDialog1.Document = PrintDocument1
If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
PrintDocument1.Print()
End If
End Sub

Private Sub BtnChiudi_Click(sender As Object, e As EventArgs) Handles BtnChiudi.Click
Me.Close()
End Sub

''' <summary>
''' PrintPage è l'evento di stampa. Questo evento viene generato per ogni
''' pagina che verrà stampata. È inoltre possibile gestire gli eventi BeginPrint ed EndPrint
''' per ottenere un maggiore controllo.
''' </summary>
Private Sub pdoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

'Coordinate della stampa dell'immagine.
Dim margineSuperiore As Integer = CInt(NumericUpDown1.Value)
Dim margineSinistro As Integer = CInt(NumericUpDown2.Value)
Dim larghezza As Integer = CInt(NumericUpDown3.Value)
Dim altezza As Integer = CInt(NumericUpDown4.Value)

'Se voglio rappresentare l'immagine della PictureBox della Forms di stampa (immagine inserita manualmente nella PictureBox1).
'uso la seguente riga di codice.
' e.Graphics.DrawImage(PictureBox1.Image, margineSinistro, margineSuperiore, larghezza, altezza)

'Se voglio rappresentare un'immagine presa in una determinata cartella uso la seguente riga di codice.
' e.Graphics.DrawImage(Image.FromFile("Qui va inserito il percorso della cartella dove si trova l'immagine"), margineSinistro, margineSuperiore, larghezza, altezza)

' Io per comodità, ho aggiunto una cartella e ci ho messo dentro una immagine e quindi gli ho dato il mio percorso che devi cambiare secondo le tue esigenze.
e.Graphics.DrawImage(Image.FromFile("E:\EsempioStampa\EsempioStampa\Immagini\Castello.jpg"), margineSinistro, margineSuperiore, larghezza, altezza)
End Sub

End Class

Cosi deve funzionare per forza. Comunque prova e poi fammi sapere. spero di esserti stato d'aiuto.
Ciao. Peppino.

e444 Profilo | Newbie

Grazie Peppino... con solo una stringa ho risolto il mio problema.

e.Graphics.DrawImage(My.Resources.immagine2, 30, 30, 50, 50)

Peppino Profilo | Junior Member

OK. Se in qualche modo sono stato di aiuto clicca su accetta cosi viene chiuso il post.
Ciao. Peppino.

e444 Profilo | Newbie

Ok, fatto e grazie ancora.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5