Testo in Rettangolo Cut Edge

In un Canvas sto creando l’anteprima a video di alcune stampe ( in particolare Fattura etc… )
E’ tutto OK , devo solo inserire del testo in un rettangolo troncato appunto alla dimensione del rettangolo.
Ho tutte le variabili che mi servono
posizione X, posizione Y, larghezza, altezza
vorrei proprio solo TAGLIARE il testo in base alla larghezza del rettangolo.

Qualcuno lo ha gi fatto ???

Ciao Massimiliano
io ho fatto una cosa simile quando dovevo creare, partendo da immagini di copertine cd e titoli album, delle nuove immagini con la copertina e sotto il titolo, in un riquadro specifico.
temo che l’unica soluzione ( almeno quella alla fine ho usato ) si di ciclare, riducendo man mano la stringa, finche’ Graphics.StringWidth della stringa stessa rientri nella larghezza del rettangolo.
io poi nel mio caso tagliavo alla parola, quindi col ciclo andavo rimuovendo man mano parole usando le funzioni Countfields e nthfield, e poi una volta raggiunta la larghezza richiesta aggiungevo i puntini di sospensione …
tu invece se ho capito vuoi proprio troncare, quindi ti basta togliere un carattere alla volta a destra finche’ la misura e’ giusta
brutta soluzione, ma non ho trovato altro

In che senso troncare?
ParolaMoltoLunga deve diventare ParolaMolto… (se non entra tutta)
O vuoi solo visualizzare quello che visibile all’interno di un rettangolo?

In quest’ultimo caso basta creare un nuovo oggetto graphics con g.clip
http://documentation.xojo.com/index.php/Graphics.Clip

Quello che disegni (o scrivi) oltre il limiti non verr mostrato nel disegno finale

Ok mi sembra una soluzione … ora devo applicarla a circa 127 campi di testa, altrettanti di coda, 56 per il corpo e 8 per il castelletto iva, e non tutti sono utilizzati.
diciamo che devo utilizzare almeno un centinaio di clip…

posso creare una matrice ?

non puoi crearli al volo quando serve?

Si, cos ho fatto …

      if ffcontenuto.trim <> "" then
        mybox = graph.Clip(round(rsdeftesta.Field("colonna").DoubleValue * fattore),round(rsdeftesta.Field("riga").DoubleValue * fattore),round(rsdeftesta.Field("larghezza").DoubleValue * fattore),round(rsdeftesta.Field("interlinea").DoubleValue * fattore))
        mybox.TextFont = ffont
        mybox.TextSize = ffontsize
        mybox.DrawString(ffcontenuto,0,round(rsdeftesta.Field("interlinea").DoubleValue * (fattore / 2)))
      end if