Home Page Home Page Articoli La stampa di una Win Form

La stampa di una Win Form

Vedremo in questo articolo i passi necessari per creare una stampa sia di testo che di grafica di una WinForm attraverso .NET.
Autore: Marco Caruso Livello:
Il framework per gestire i servizi correlati alla stampa, ci mette a disposizione il Namespace System.Drawing.Printing.

Il "cuore" di questo Namespace è la classe PrintDocument che invia un'output ad una stampante, che può essere testo o grafica. Si può stampare un file di testo inviando al PrintDocument uno StreamReader, ma in questo articolo analizzeremo come stampare una form con del testo e della grafica nel modo più generale possibile visto che le opzioni e le soluzioni sono molteplici.

Come detto l'oggetto importante per la stampa è il PrintDocument. Se utilizzate Visual Studio .NET basta fare il Drag&Drop dall'oggetto dalla Toolbar degli strumenti.
Per impostare le proprietà di output si deve gestire l'evento PrintPage, questo evento è composto da due argomenti:


Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage


Il secondo argomento il PrintPageEventArgs ha al proprio interno un membro "Graphics" che è un riferimento all'oggetto su cui poter disegnare.
E' proprio attraverso questo oggetto che possiamo "sbizzarrirci" nel disegnare la nostra stampa perché ci consente di accedere a tutti i metodi esposti dalla classe System.Drawing.Graphics.


Entriamo più in dettaglio:
Per prima cosa importiamo il Namespace utilizzato per stampare:


Imports System.Drawing


Allora per stampare un semplice testo basta richiamare il metodo DrawString e quindi faremo per esempio:


e.Graphics.DrawString("Stampa di una win form", Me.Font, Brushes.Red, 40, 5)


Il metodo accetta diversi overloading, questo che ho usato accetta questi parametri che andremo ad illustrare:

1) Il testo che si deve stampare("Stampa di una win form")
2) Il Fontda utilizzare, per comodità ho ripreso quello del form(Me.Form)
3) Il colore della scritta(Brushes.Red)
4) Infine le coordinate di dove si vuole scrivere il testo

Come potete notare potete personalizzare il più possibile il vostro testo.
Ma vediamo come poter disegnare nella nostra stampa.

Mettiamo il caso che vogliamo stampare una checkbox che è stata selezionata.
Per prima cosa dobbiamo definire la nostra "matita" creando un oggetto Pen.
Il colore usato è il nero.


Dim penna As New Pen(Color.Black)


Poi devo disegnarmi il mio checkbox e quindi disegnare un rettangolo in questo modo:


e.Graphics.DrawRectangle(penna, check1.Location.X, check1.Location.Y, 16, 16)


Per comodità uso le coordinate della checkbox e inoltre bisogna dargli la larghezza e l?altezza del rettangolo.
Una volta creato il rettangolo bisogna creare all?interno due linee che si incrociano per formare una x e "simulare" la selezione avvenuta.
Quindi faremo la prima riga che parte dall?angolo superiore sinistro e la seconda che parte dall?angolo superiore destro.


e.Graphics.DrawLine(penna, check1.Location.X, check1.Location.Y, check1.Location.X + 16, check1.Location.Y + 16)
e.Graphics.DrawLine(penna, check1.Location.X + 16, check1.Location.Y, check1.Location.X, check1.Location.Y + 16)


Quando si disegna una linea bisogna impostare le coordinate del punto di partenza e le coordinate del punto di arrivo e qui bisogna giocare un pò con gli assi cartesiani.
Poi basta richiamare il metodo Print e si avvia il processo di stampa

Form di Esempio


Stampa della Form


Conclusioni
Il Namespace per la stampa in .NET offre diverse funzionalità che ci permettono di soddisfare quasi tutte le nostre esigenze, impostando anche un'anteprima per esempio e/o anche il tipo di stampante.
Per finire questo esempio è interessante (non solo per la stampa) ma anche per scoprire tutte le potenzialità e i metodi offerti dalla classe Graphics.


Voto medio articolo: 3.4 Numero Voti: 18
Marco Caruso

Marco Caruso

Consulente Informatico di Roma, inizia la sua carriera nel 2000 utilizzando la tecnlogia Lotus Notes e il server Domino. Alla fine del 2001 passa alla piattaforma Microsoft.NET dove si appassiona sempre più a questa nuova tecnlogia. Importanti progetti a livello Enterprise per grandi società lo portano a cono... Profilo completo

Articoli collegati

Importare dati di Excel con .NET tramite ODBC o OLEDB e Drag & Drop
Spesso in ambito aziendale è necessario adattare le proprie applicazioni e consentire che possano leggere e operare su file e dati provenienti dai tools della suite di Office fra cui uno dei più usati è Excel. Vediamo quindi come importare dati da file XLS tramite ODBC/OLEDB e Drag & Drop.
Autore: Marco Farina | Difficoltà:
Gestire le Access Control List (ACL) NTFS di file e directory con .NET
Scopriamo come nel .NET Framework 2.0 sia diventato facile recuperare e modificare la lista controllo accessi dei file e directory e in generale come gestire le ACL.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Costruire un client FTP usando il .NET Framework 2.0
In questo articolo tratteremo una delle novità più attese del .NET Framework 2.0, le classi per l'utilizzo del protocollo FTP. Realizzeremo un mini client FTP con alcune fra le funzionalità più comuni.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 28
Alla scoperta di WMI, questo sconosciuto
WMI o Windows Management Instrumentation è un componente fondamentale del sistema operativo Windows. La sua utilità è permettere l'accesso a informazioni fondamentali del sistema, come informazioni sull'hardware, software, servizi, ecc. Vediamo come sfruttarlo con .NET.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 2
Gestire e sfruttare i campi BLOB usando .NET
I database server sono software con una potenza elevata e offrono una vasta gamma di features che spesso non vengono utilizzate. Una di queste sono i campi BLOB (campi per contenere dati in formato binario). Vediamo in questo articolo come utilizzarli con .NET.
Autore: David De Giacomi | Difficoltà: | Commenti: 13
Catturare immagini da una Webcam con .NET
In questo articolo mostreremo come è possibile costruire una applicazione per catturare immagini da una Webcam, utilizzando componenti già presenti in Windows, in questo caso l' Avicap32.dll
Autore: Giovanni Ferron | Difficoltà: | Commenti: 22 | Voto:
Usare il protocollo POP3 per creare un Client di posta
Volete costruirvi un client di posta? Volete costruire una Web Mail ? Ecco un articolo che vi introduce al protocollo POP3 e vi insegna come costruire un mini client di posta elettronica.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 2 | Voto:
Creare un Setup di un progetto con Visual Studio .NET
Ecco delle semplici ma dettagliate istruzioni passo-passo per costruire un pacchetto di Setup (Setup Package) per le nostre Applicazioni WinForms.
Autore: Marco Caruso | Difficoltà: | Commenti: 18
Creare un?icona nella Taskbar di Windows con .NET
Scoprirete come potenziare la vostra applicazione aggiungendo un'icona nella barra di Windows nella famosa Tray Area a fianco dell'orologio del sistema. Disponibile sia codice VB.NET che C#.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 1 | Voto:
Costruire un Servizio di Windows usando .NET
Un avanzato tutorial che vi spiegherà passo passo e in modo dettagliato le istruzioni per costruire un Servizio Windows, utilizzando ciò che il .NET Framework ci mette a disposizione. Disponibile sia codice C# che VB.NET.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 13 | Voto:
Windows XP Visual Styles con .NET e Win Forms
Come usare lo stile XP nelle vostre applicazioni .NET ? Questo articolo vi spiega come applicare a Buttons, Textbox, ListViews (ai controlli di Windows in genere) lo stile/tema grafico della GUI introdotto dal sistema operativo Windows XP.
Autore: David De Giacomi | Difficoltà: | Commenti: 7
Come sfruttare le funzioni di una DLL unmanaged esterna creata in C/C++
Come usare la classe DllImportAttribute messa a disposizione dal namespace System.Runtime.InteropServices per sfruttare le funzioni di una DLL unmanaged Win32 old-style scritta con Visual C++ 6.0
Autore: David De Giacomi | Difficoltà: | Commenti: 4 | Voto:
Creare una DLL in Visual C++ 6.0
Vedremo in questo articolo come creare una Dynamic Link Link Library, comunemente chiamata DLL con Visual C++ 6.0. Questo passo è necessario per poi dimostrare l'utilizzo di librerie C/C++ in .NET tramite il package System.Runtime.InteropServices
Autore: David De Giacomi | Difficoltà: | Commenti: 11 | Voto:
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5