Troncamento stringa

martedì 12 maggio 2009 - 15.39

sergio58 Profilo | Junior Member

salve a tutti,
Sto scrivendo una routine di stampa utilizzando l'evento _printPage. Ho bisogno di estrarre una parte di stringa da stampare utilizzando i pixel.

Per misurare la stringa uso:
Dim stzDimensioneStringa As New SizeF


sngFineColonna = 790
strRigaStampa = stringa da stampare
stzDimensioneStringa = e.Graphics.MeasureString(strRigaStampa, TipoCarattere) 'misura la stringa in questo carattere
e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)

dovrei utilizzare quella parte di stringa che entra nella colonna ad essa riservata.

Utilizzando .substring(0,30) mi considera i caratteri della stringa, io invece vorrei utilizzare lo stesso metodo usando i pixel per ricavare la stringa da stampare.


Esiste qualche classe o metodo per farlo, o sapete indicarmi qualche procedura per arrivare allo stesso risultato ?

Grazie a tutti.
Sergio

rob88 Profilo | Junior Member

http://www.codeproject.com/KB/GDI-plus/MeasureStrings.aspx
ciao....a qst link hai tutto quello che ti serve...

sergio58 Profilo | Junior Member

L'articolo è molto interessante,ma prevede il cambiamneto del font per adattare la stringa alla lunghezza disponibile.

Cosa non fattibile durante un processo di stampa.

Comunque mi è stato utile perchè mi ha fatto venire in mente questo:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Potresti darmi una tua opinione, in merito al tempo che può assorbire una routine del genere in una stampa di 10 pagine con almeno 2 colonne da formattare , o se si può migliorare ?

Non credo che il codice che mi hai linkato si possa adattare a questo scopo

grazie dell'aiuto

Sergio

rob88 Profilo | Junior Member

Allora...quello ke ti consiglio..anke x esperienza personale...in casi di qst genere...di far eseguire il codice di stampa ad un thread separato....utilizzando il controllo backgroundworker....te lo consiglio...
in qst modo il programma continuerà a fare il suo lavoro indipendentemente dalla routine di stampa....
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5