Domanda

Come faccio a disegnare testo troncato con ATSUI ?? Ho un'applicazione legacy che utilizza QuickDraw API. utilizza StringWidth, TruncString e funzioni coulisse. Ho potuto sostituire lo StringWidth e coulisse con ATSUMeasureTextImage e ATSUDrawText di ATSUI. Tuttavia non ho potuto trovare un modo per troncare una stringa in modo che si inserisca in un rettangolo.

Ho usato al quarzo con QuickDraw prima di scegliere ATSUI. Quarzo non fornisce alcuna funzione di stimare le dimensioni (in pixel) del testo elaborato.

CGContextSelectFont(cgContext,
    "Geneva", 12.0, kCGEncodingMacRoman);
CGContextSetTextMatrix(cgContext,
    CGAffineTransformMake(1.0,0.0, 0.0,
    -1.0, 0.0, 0.0));
CGContextShowTextAtPoint(cgContext,
    inPoint.h, inPoint.v + 12.00, (const
    char*)&(inString[1]), inString[0]);

C'è qualche funzione nel ATSUI che fa stringa troncamento come TruncString ... ?? se non Come faccio a disegnare una stringa troncata ad un rettangolo.

Grazie, Abhinay.

È stato utile?

Soluzione

Si desidera utilizzare HIThemeGetTextDimensions per misurare la stringa con una politica di troncamento. Essa vi darà la larghezza rettangolo e l'altezza e la linea di base; si può fare un CGRect con quella larghezza e altezza e impostare la sua origine a dove si desidera che il testo.

Sorprendentemente, questa funzione sembra essere ancora supportato in 64 bit, anche se non è mai stata documentata (non v'è mai stata alcuna documentazione di riferimento a tutti per HITheme). Cercarlo nelle intestazioni per i dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top