Question

Je suis en train de lire à travers la documentation mais il n'est pas immédiatement clair pour moi comment dessiner un polygone en utilisant CGPath. Tout ce que je dois faire est de tirer CGPath autour de quelque chose comme ceci:

__
\  \ 
 \  \
  \__\

Quelqu'un pourrait-il s'il vous plaît fournir un extrait sur la façon de le faire?

De plus, je suppose que CGPathContainsPoint me aidera à déterminer si un point est à l'intérieur tel chemin ?, ou est-ce le chemin doivent être un dessin solide

Aussi comment puis-je déplacer le cgpath autour? Est-ce aussi facile que de changer quelque chose comme l'origine comme dans CGRect?

Merci.

-Oscar

Était-ce utile?

La solution

Vous devriez le faire comme ceci:

- (void)drawRect:(CGRect)rect { 

        CGContextRef context = UIGraphicsGetCurrentContext(); 

        CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
        CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);

        // Draw them with a 2.0 stroke width so they are a bit more visible.
        CGContextSetLineWidth(context, 2.0);

        for(int idx = 0; idx < self.points.count; idx++)
        {

            point = [self.points objectAtIndex:idx];//Edited 
            if(idx == 0)
            {
                // move to the first point
                CGContextMoveToPoint(context, point.x, point.y);
            }
            else
            {
                CGContextAddLineToPoint(context, point.x, point.y);
            }
        }

        CGContextStrokePath(context);
}

Notez ici, les points est le tableau de points que vous voulez dessiner le polygone pour. Il doit donc être trajectoire circulaire comme:. Vous dessinez un triangle de points (x1, x2, x3) alors vous devriez passer dans (x1, x2, x3, x1) tableau

Hope this helps.

Autres conseils

Ceci est un exemple de la façon de créer un triangle en utilisant CGPath, il suffit de mettre les points.

var path = CGPathCreateMutable()
CGPathMoveToPoint(path, nil, 0, 0) //start from here
CGPathAddLineToPoint(path, nil, 20, 44) 
CGPathAddLineToPoint(path, nil, 40, 0) 
CGPathAddLineToPoint(path, nil, 0, 0)

//and to use in SpriteKit, for example

var tri = SKShapeNode(path: path) 
var color = NSColor.blueColor()
tri.strokeColor = color
tri.fillColor = color

Ceci est le résultat

Triangle avec CGPath

Voir QuartzDemo l'application. Il a le code pour ce faire, ainsi que de nombreuses autres fonctions de dessin Quartz.

de Draelach réponse mise à jour Swift 4:

let path = CGMutablePath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 20, y: 44))
path.addLine(to: CGPoint(x: 40, y: 0))
path.addLine(to: CGPoint(x: 0, y: 0))

let tri = SKShapeNode(path: path)

La classe CS193P de Stanford sur l'iPhone avait un projet appelé HelloPoly qui pourrait être exactement ce que vous voulez - voir class page d'accueil pour la spécification et voir la vidéo de la façon dont il a été mis en œuvre (et des solutions google des personnes qui ont fait l'affectation).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top