Frage

Wie kann ich abgeschnitten Text mit ATSUI ziehen ?? Ich habe einen Legacy-App, das QuickDraw-API verwendet. es nutzt StringWidth, TruncString und DrawString Funktionen. Ich konnte den StringWidth und DrawString mit ATSUI der ATSUMeasureTextImage und ATSUDrawText ersetzen. Allerdings konnte ich nicht einen Weg finden, um eine Zeichenfolge zu kürzen, so dass es in eine rect paßt.

Ich verwendete Quarz mit QuickDraw vor ATSUI wählen. Quartz keine Funktionen zur Verfügung stellen, die Größe zu schätzen (in Pixeln) des gezeichneten Textes.

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

Gibt es eine Funktion in ATSUI die Zeichenfolge abgeschnitten hat wie TruncString ... ?? wenn nicht, wie zeichne ich einen String abgeschnitten zu einer rect.

Danke, Abhinay.

War es hilfreich?

Lösung

Sie möchten HIThemeGetTextDimensions verwenden, um die Zeichenfolge mit einer Abschneide Politik zu messen. Es wird Ihnen das Rechteck Breite und Höhe und die Basislinie; Sie können mit dieser Breite und Höhe ein CGRect machen und setzen ihren Ursprung, wo Sie den Text.

Erstaunlicherweise ist diese Funktion noch erscheint in 64-Bit unterstützt werden, obwohl es nicht dokumentiert worden ist (es hat nie eine Referenzdokumentation überhaupt für HITheme). Schauen Sie es in den Headern für Details auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top