Stampare un form in orizzontale

venerdì 20 maggio 2011 - 22.57

gianni01 Profilo | Newbie

Salve a tutti, anch'io come molti pongo una domanda che sarà stata trattata milioni di volte.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintForm.Click
PrintForm1.Print()
End Sub

Questo è il banalissimo codice che utilizzo per stampare un form.
Il piccolo problema che si presenta è che quando un form si sviluppa in orizzontale e va oltre la dimensione del foglio......... viene troncato.
Come posso fare per ruotare il foglio?
Grazie a tutti.

Brainkiller Profilo | Guru

>Come posso fare per ruotare il foglio?
>Grazie a tutti.

Prova ad aggiungere questa riga:

PrintForm1.PrinterSettings.DefaultPageSettings.Landscape = True

Prima del Print()
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

gianni01 Profilo | Newbie

Ciao Brainkiller, perfettissimo,
in effetti il foglio in questo modo viene ruotato in orizzontale e va benissimo, ma ho scoperto un altro problema.
Ovvero che in ogni caso il form sborda dalle dimensioni del foglio, in questo caso con il foglio orizzontale è comunque più largo del foglio.
Non c'è la possibilità, mantenedo l'orientamento orizzontale, che come ti ripeto va benissimo mi risolve anche altri problemi, inviare la stampa con una sorta di comando "adatta l'immagine alla pagina"?
forse chiedo troppo, ma non ho bisogno di particolari funzioni in queste stampe, mi basta che la form cosi com'è, venga stampata, ma purtroppo il cliente la vuole vedere tutta e su una pagina.
Rigrazio calorosamente tutti.

Brainkiller Profilo | Guru

>Non c'è la possibilità, mantenedo l'orientamento orizzontale,
>che come ti ripeto va benissimo mi risolve anche altri problemi,
>inviare la stampa con una sorta di comando "adatta l'immagine
>alla pagina"?

Ho provato a guardare in giro ma non c'è un metodo per fare il fit to width.
Bisognerebbe screenshottare la Form, ridimensionarla e adattarla al foglio e stamparla.
Prova a guardare qua, qualcuno ha già fatto questa cosa in altro modo:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=39117
In pratica si definisce una Bitmap e gli si va a disegnare sopra la Form.
Poi dalla Bitmap si chiama il metodo GetThumbnailImage() che crea una immagine ridotta a quel punto la puoi stampare.
Se sei alle prime armi non è facilissimo da capire.

>forse chiedo troppo, ma non ho bisogno di particolari funzioni
>in queste stampe, mi basta che la form cosi com'è, venga stampata,
>ma purtroppo il cliente la vuole vedere tutta e su una pagina.
>Rigrazio calorosamente tutti.

Se la risposta che ti ho dato sopra ti è stata d'aiuto accettala cliccando sull'apposito pulsante "Accetta".
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

gianni01 Profilo | Newbie

Forse ho trovato la soluzione, è n po lunga am credo si possa fare.
Salvo l'immagine la metto in una form ridimensionabile e la stampo.
Il primo problema è questo:

Private Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveImage.Click
Try
GetBitmap.Save("C:\temp\Form.bmp", Imaging.ImageFormat.Bmp)
MessageBox.Show("L'immagine è stata salvata correttamente.", "DrawToBitmap", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

mi da questo errore: "Errore generico in GDI+" ???????
Mi sapete dire il motivo? grazie

Brainkiller Profilo | Guru

>mi da questo errore: "Errore generico in GDI+" ???????
>Mi sapete dire il motivo? grazie

Forse il problema è l'oggetto GetBitmap non vedendo come è stato creato nè valorizzato non posso dire altro ma solo presumere che il problema sia lì.

Se la risposta ti è stata d'aiuto clicca sul pulsante verde "Accetta" per marcare il thread come risolto.

Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5