2010-11-05 6 views
6

Ich verstehe nicht, zu verwenden, wie „CGAffineTransform“ Parameter anzuwenden, die in praktisch jedem CGPath Methode erscheint, zB:Benötigen Sie Beispiele dafür, wie CGAffineTransform in CGPaths

void CGPathAddRect (
    CGMutablePathRef path, 
    const CGAffineTransform *m, 
    CGRect rect 
); 

Sagen wir, ich möchte ein rect Weg drehen, , wie würde ich diese Funktion ausschreiben? Woher bekomme ich die Transformationsmatrix?

Antwort

7

Verwenden Sie CGAffineTransformMakeRotation, um eine CGAffineTransform zu erstellen, die das Rechteck um den Punkt (0, 0) dreht.

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI/4); // π/4 = 45° 
CGPathAddRect(path, &rotation, CGRectMake(0, 0, 80, 40)); 

Wenn Sie es brauchen alle anderen Punkte zu drehen um (x, y), müssen Sie 2 Übersetzungen komponieren bewegen (x, y) auf (0, 0) und zurück.

+0

Vielen Dank für Ihre Antwort. Das Ampersand war wirklich das fehlende Stück, weil ich immer Fehler ohne es bekam. – anna