Как да нарисувате пресечен текст с ATSUI

Как да нарисувам съкратен текст с ATSUI?? Имам наследено приложение, което използва QuickDraw API. той използва функциите StringWidth, TruncString и DrawString. Мога да заменя StringWidth и DrawString с 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, която прави съкращаване на низ като TruncString...?? ако не, как да нарисувам низ, съкратен до правоъгълник.

Благодаря, Абхинай.


person Abhinay K Reddyreddy    schedule 13.10.2010    source източник


Отговори (1)


Искате да използвате HIThemeGetTextDimensions за измерване на низа с политика за съкращаване. Той ще ви даде ширината и височината на правоъгълника и основната линия; можете да направите CGRect с тази ширина и височина и да зададете неговия произход където пожелаете текста.

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

person Peter Hosey    schedule 14.10.2010
comment
Благодаря, Питър, намерих начин да измервам размерите на изложения текст с функциите на ATSUI. Засега не се занимавам с 64-битови. - person Abhinay K Reddyreddy; 29.10.2010
comment
Abhinay K Reddyreddy: Ако вашето решение се различава от моето, защо не го публикувате като отговор и го приемете? - person Peter Hosey; 29.10.2010