Ich muss effiziente Hit-Tests gegen eine (potenziell große) Anzahl von Komponenten durchführen, so dass ich alle meine Primitiven als NSBezierPath
Instanzen vertreten. Alles funktioniert bisher sehr gut.NSString Zeichnung im Vergleich zu String als NSBezierPath Zeichnung
Jetzt bin ich Probleme Umwandlung NSString
Gegenstände, insbesondere ihre Position in der Ansicht widerspiegelt: Ich verwende die NSString (BezierConversions)
Kategorie von Apples SpeedometerView Beispiel Strings in Bezier-Pfade zu konvertieren.
Der Bezier-Pfad für Strings erstellt sieht gut aus, sondern positionieren sie die Position des NSString
Instanzen Lage in der Ansicht übereinstimmen funktioniert nicht ganz so nehme ich an diese Frage wirklich über
NSBezierPath
undtransformUsingAffineTransform:
vs .- eine Kombination aus
NSAffineTransform
zu einer Ansicht undNSString drawAtPoint:
In meinem Testprojekt auch der triviale Fall nicht angewandt :
Grau Bezier Darstellung Zeichenkette gezeichnet werden:
NSAffineTransform *moveFinal = [NSAffineTransform transform];
[moveFinal translateXBy:x yBy:y];
[textBezier transformUsingAffineTransform:moveFinal];
und die purpurne Zeichenfolge über
[testString drawAtPoint:NSMakePoint(x, y)
withAttributes:attributes];
gleiche Attribute, gleiche Eingangspositionen, andere Position in der Ansicht.
Und es wird nur schlimmer mit gedrehten Text.
UPDATE # 1
Sieht aus wie es von
NSString sizeWithAttributes:
NSBezierPath bounds
jetzt das Experimentieren mit NSString
bo nach unten zu verschiedenen Begrenzungskästen zurück kocht endingRectWithSize
Bounds der Zeichnung ist nicht die gleiche wie Größe des Textes. Zum Beispiel wird eine große römische Kursivschrift * f * weit hinter den Grenzen der Box, die von 'NSAttributedString size' zurückgegeben wird, gezeichnet. – hamstergene
Ja, deshalb bin ich zu 'boundingRectWithSize' gewechselt. Gute Intro über verschiedene Schriftgrößen finden Sie [hier] (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/FontHandling/Tasks/GettingFontMetrics.html), wo sizeWithAttributes die äußere Begrenzungsbox zu verwenden scheint und 'NSBezierPath bounds' die tatsächliche Fläche, die von den Glyphen belegt wird. – Jay