Вопрос

Как нарисовать усеченный текст с Atsui ?? У меня есть устаревшее приложение, которое использует API QuickDraw. Он использует функции stringwidth, truncstring и шнурки. Я мог бы заменить stringwidth и шнурки на Atsui's AtsumeasureTextImage и AtsudrawText. Однако я не смог найти способ усечь строку, чтобы она вписывалась в прямо.

Я использовал Quartz с QuickDraw, прежде чем выбрать Atsui. Quartz не предоставляет никаких функций для оценки размера (в пикселях) нарисованного текста.

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

Есть ли какая -либо функция в ATSUI, которая выполняет усечение строки, как увлечение ... ?? Если нет, как мне нарисовать строку, усеченную на прямоугольник.

Спасибо, Абхинай.

Это было полезно?

Решение

Вы хотите использовать HIThemeGetTextDimensions Чтобы измерить строку с помощью политики усечения. Это даст вам прямоугольную ширину и высоту и базовую линию; Вы можете сделать Cgrect с этой шириной и высотой и установить его происхождение, где бы вы ни хотели текст.

Удивительно, но эта функция, по-видимому, по-прежнему поддерживается в 64-битной, хотя она никогда не была задокументирована (для ссора вообще не было никакой справочной документации). Посмотрите на заголовки для деталей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top