Question

Comment dessiner du texte tronqué avec ATSUI ?? J'ai une application héritée qui utilise l'API QuickDraw. il utilise StringWidth, TruncString et fonctions coulissé. Je pourrais remplacer le StringWidth et DrawString avec ATSUMeasureTextImage et ATSUDrawText de ATSUI. Cependant, je ne pouvais pas trouver un moyen de tronquer une chaîne afin qu'elle s'insère dans un rect.

je Quartz avec QuickDraw avant de choisir ATSUI. Quartz ne fournit pas de fonctions pour estimer la taille (en pixels) du texte élaboré.

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]);

Y at-il fonction ATSUI qui fait troncature chaîne comme TruncString ... ?? sinon comment puis-je dessiner une chaîne tronquée à un rect.

Merci, Abhinay.

Était-ce utile?

La solution

Vous voulez utiliser HIThemeGetTextDimensions pour mesurer la chaîne avec une politique de troncature. Il vous donnera la largeur du rectangle et la hauteur et la ligne de base; vous pouvez faire une CGRect avec cette largeur et la hauteur et définir son origine à l'endroit où vous voulez que le texte.

Etonnamment, cette fonction semble être soutenue encore en 64 bits, bien qu'il n'a jamais été documentée (il n'y a jamais eu de documents de référence du tout pour HITheme). Regardez-le dans les en-têtes pour les détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top