Как нарисовать усеченный текст с Atsui
-
29-09-2019 - |
Вопрос
Как нарисовать усеченный текст с 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-битной, хотя она никогда не была задокументирована (для ссора вообще не было никакой справочной документации). Посмотрите на заголовки для деталей.