Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Buongiorno a tutti,
mi scuso in anticipo per la banalità della domanda ma ho cercato in rete, letto tanto eppure non riesco a implementare velocemente un codice che per voi saraà sicuramente banale...
Io avevo queste poche linee di codice che semplicemente stampavano 2 righe, con una riga vuota in mezzo, con un testo una volta utilizzando un font e la seconda volta con un altro font
Mi potreste riscrivere tale codice "tradotto" in vb.net (2008)?
La dimensione della pagina non importa perché dovrebbe prendere quella predefinita sulla stampante (almeno in VB6 era così...)
'allineamento orizzontale: vicino (near) al margine sinistro
CustomFormat2.Alignment= StringAlignment.Center
EndSub
Ma fra il primo e il secondo testo (entrambi centrati verticalmente e orizzontalmente) mi servirebbe una riga vuota.
Invece ora come ora i due testi sono sovrapposto (petché centra le singole righe, non il blocco di testo).
Come fare?
Non capisco anche la seguente cosa: come mai in "e.Graphics.DrawString" al posto di "e.MarginBounds" non posso mettere un numero tipo 100?
Se lo faccio mi dà questo errore:
Error 1 Overload resolution failed because no accessible 'DrawString' can be called with these arguments:
'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, layoutRectangle As System.Drawing.RectangleF, format As System.Drawing.StringFormat)': Value of type 'Integer' cannot be converted to 'System.Drawing.RectangleF'.
'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, point As System.Drawing.PointF, format As System.Drawing.StringFormat)': Value of type 'Integer' cannot be converted to 'System.Drawing.PointF'.
'Public Sub DrawString(s As String, font As System.Drawing.Font, brush As System.Drawing.Brush, x As Single, y As Single)': Value of type 'System.Drawing.StringFormat' cannot be converted to 'Single'. C:\Documents and Settings\Administrator\Desktop\Stampa_Testo\Stampa_Testo\Stampa_Testo\Form1.vb 50 9 Stampa_Testo
Ciao.
Così,, al voto.. Leggi qua:
Value of type 'Integer' cannot be converted to 'System.Drawing.RectangleF'.
Ti sta dicendo che i parametri che tu passi alla funzione non sono corretti: per quell'overload vuole un oggetto RectangleF e non integer.
Ma tu devi centrale le 2 scritte?.
Mi par di ricordare che nella guida di Totem ci fosse qualcosa di simile...
Tipo: calcolava il numero di righe della pagina facendo "spazio tra margine sup e inf" / Altezza riga (in funzione del carattere).
Guarda qua:
Codice sorgente - presumibilmente VB.NET
'Per sapere quante righe ci possono stare nella pagine,
'bisogna misurare l'altezza dei caratteri
Static CharHeight As Single = Font.GetHeight(e.Graphics)
'Calcola le linee di testo che possono stare in una pagina.
Static TotalLines As Int16 = e.MarginBounds.Height/ CharHeight
Ho guardato il link ma si parla di altezza dei caratteri, di dimensioni della pagina...
Ma porca miseria come si dice "vai 12 mm più in basso del centro e scrivi quest'altro testo"?
Sono solo due righe veramente quelle che devo scrivere, quindi problemi sulle dimensioni totali non ce ne ho...
Mettiamo che adesso ho questo:
Codice sorgente - presumibilmente Plain Text
'allineamento verticale: vicino (near) al margine superiore
Appunto.
Nell'esempio di Totem lui parte dal angolo in alto a sinistra (tenendo conto dei margini) e aggiunge le righe impostando di volta in volta la coordinata Y della riga incrementandola di un passo pari all'altezza di 1 singola riga.
Tu devi fare la stessa cosa.
Prova una cosa del tipo:
Y = altezza pagina/2
1 riga al punto Y-10 mm
2 riga al punto Y+10 mm
Basta che aggiusti le misure ad occhio..
Devi usare questo overload del metodo:
DrawString(String, Font, Brush, PointF, StringFormat)
Imposta tu PointF, cioè le coordinate X e Y dove scrivere la stringa.
Non puoi impostare in questo caso allineamento verticale come centrato.
Ultima modifica effettuata da Renny il 27/09/2012 alle 18:03