Per ricavare la lunghezza di una stringa una soluzione che io usavo nel vecchio VB6 era quella di creare a run-time una label con autosize=true e visible=false, inserirgli il testo all'interno e ricavare il suo relativo width... Soluzione come vedi un po' spartana ma forse il NET ci da diverse soluzioni ... basta trovarle nelle immense librerie...