Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Sto realizzando una piccola utility per compilare in automatico un modulo di iscrizione.
Ho tentato con TextBox e RitchTextBox, ma per mantenere la fedeltà del documento
originale ho pensato di utilizzare una PictureBox e delle TextBox sovrapposte che
vengono popolate da codice durante la compilazione.
Ora mi trovo con il problema di stampare la PictureBox con i campi compilati,
ma dopo diversi tentativi non ho cavato un ragno dal buco.
Visto che evidentemente non si possono usare i controlli:
Per stampare il form, puoi usare l'oggetto PrintDocument.
Purtroppo eventuali label o text vanno sempre a finire dietro la picturebox, anche se le metti in primo piano.
Per avere dei testi all'interno delle picturebox però ci puoi scrivere:
Codice sorgente - presumibilmente VB.NET
Imports System.Drawing.Printing
PublicClass Form1
DimWithEvents STAMPA AsNew PrintDocument
Dim bmpSTAMPA As Bitmap
PrivateSub Form1_Load(sender AsObject, e As EventArgs)HandlesMyBase.Load
Ciao Carlo, ma non dovevamo rivederci su un altro thread? Sono contento che hai risposto, grazie.
Nel frattempo le circostanze mi hanno regalato un altro impegno che voglio assolutamente chiudere
al più presto, perché altrimenti non ne esco più (già ne prevedo altri).
Ho letto la tua risposta, effettivamente mi sembra di capire che mi sono di nuovo cacciato nella .........
Tu parli di stampare il Form mentre io pensavo di stampare solo la PictureBox.
Voglio comunque analizzare e provare ( se ci riesco ) il tuo codice per vedere quali possono essere i risultati.
Intanto ne approfitto per completare la spiegazione della situazione in cui ero arrivato:
--- Comando stampa ---
Private Sub Label_3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label_3.Click
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
End Sub
1 - con questa procedura mi visualizza una pagina vuota
Sub Print(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
e.Graphics.DrawImage(PictureBox1.Image, New Point(0, 0))
End Sub
2 - con questa procedura ricevo errore " Il valore non può essere null"
Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPage_
EventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox1.Image, New Point(0, 0))
End Sub
In entrambe i casi sembra che manchi qualcosa per completare il percorso, spero di essere riuscito a spiegarmi.
Ho ancora un codice che avevo trovato in rete e che avevo momentaneamente accantonato.
In sintesi si propone di stampare in due fasi, prima la PictureBox poi le Label ( o le TextBox ).
Ora vedo ( circostanze permettendo ) cosa riesco a fare di tutte quate cose, poi ti faccio sapere.
2 - con questa procedura ricevo errore " Il valore non può essere null"
Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPage_
EventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox1.Image, New Point(0, 0))
End Sub
nella riga quotata ci sono errori.
Per stampare una PictureBox, prova con il codice nell'esempio cliccando [ STAMPA PictureBox ]
Per fare un codice nuovo devi importare l'oggetto:
Imports System.Drawing.Printing
Devi dichiarare l'oggetto con un nome di tuo gradimento nel caso specifico, "PrintDocument1" :
Dim WithEvents PrintDocument1 As New PrintDocument
se non carichi una immagine nella PictureBox hai Null quando hai caricato una immagine in una PictureBox, devi richiamare la sub di stampa con:
PrintDocument1.Print()
la sub che effettua la stampa è:
Codice sorgente - presumibilmente VB.NET
PrivateSub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox1.Image, New Point(0, 0))
EndSub
Per meglio identificare dove posizionare le righe sopramenzionate riguarda l'esempio.
La PictureBox verrà stampata sulla stampante predefinita, in alto a sinistra sul foglio di stampa.
Il PrintPreviewDialog1.ShowDialog() non serve, rimuovilo anche da progettazione, lo rimetterai solo quando ti servirà per scegliere la stampante.
Per stampare le info ti consiglio di riguardare l'esempio e imparare a scrivere nella PictureBox, scrivi una routine che prende il testo dalle textbox e lo scrive in automatico nella PictureBox .
Se hai voglia puoi fare anche il rettangolino di sfondo per avere l'aspetto etichetta, l'istruzione per il rettangolo è:
e.Graphics.FillRectangle
per misurare il testo e fare il rettangolino giusto:
e.Graphics.MeasureString
devi rispettare l'ordine, prima l'immagine nella PictureBox, poi il rettangolino e in ultimo il testo, perché quello che fai dopo sovrascrive quello che hai fatto prima.
Ultima modifica effettuata da Carlo il 11/03/2020 alle 21:19
Ciao Carlo. Le circostanze che prevedevo sono arrivate, ma non sono neanche quelle che mi aspettavo.
Sabato scorso, mentre facevo la doccia, sono caduto nella vasca ed ho picchiato il torace sul bordo, DOLOREEE .......
Probabilmente ci sono delle rotture, ma al momento non ho potuto nemmeno fare una radiografia per verificare i danni.
Ti sto scrivendo coricato sul divano con un vecchio portatile con XP perché ovviamente ho difficoltà di movimenti.
Riesco a malapena a sguazzare sul web e pochissimo altro, dunque per ora niente VB.
Di positivo c'è che al momento sono blindato e spero che almeno il CV19 mi lasci in pace.
Mi auguro che tu stia bene e spero che riusciremo a risentirci presto. Saluti e salute.