簡體   English   中英

如何使用ATSUI繪制截斷的文本

[英]How to draw Truncated text with ATSUI

如何使用ATSUI繪制截斷的文字? 我有一個使用QuickDraw API的舊版應用程序。 它使用StringWidth,TruncString和DrawString函數。 我可以用ATSUI的ATSUMeasureTextImage和ATSUDrawText替換StringWidth和DrawString。 但是我找不到一種方法來截斷字符串,使其適合rect。

在選擇ATSUI之前,我將Quartz與QuickDraw一起使用。 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一樣執行字符串截斷...? 如果沒有,我怎么畫一個被截斷為rect的字符串。

謝謝,Abhinay。

您想使用HIThemeGetTextDimensions來使用截斷策略來測量字符串。 它將為您提供矩形的寬度和高度以及基線; 您可以使用該寬度和高度制作一個CGRect,並將其原點設置為所需的文本位置。

令人驚訝的是,此功能似乎仍受64位支持,盡管它從未被記錄過(HITheme從來沒有任何參考文件)。 在標題中查找有關詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM