2011-07-14 7 views
26

J'ai un solveur de triangle, je veux un moyen d'utiliser les valeurs que je reçois de la réponse pour dessiner un triangle à l'écran qui lui correspond.Comment dessiner un triangle par programme

+0

Par "solveur triangle" Je présume que vous voulez dire quelque chose où vous dites deux côtés d'un triangle et il calcule le troisième? Est-ce un triangle rectangle? – Schwern

+0

Kinda, j'ai un moyen pour l'utilisateur d'entrer toute combinaison d'informations sur un triangle. Tels que deux côtés et un angle, trois côtés, deux angles et un côté. Et tout le triangle rectangle aussi. – user804306

Répondre

80

Si vous sous-classe un UIView vous pouvez mettre en œuvre quelque chose comme ça dans drawRect pour dessiner un triangle:

-(void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 

    CGContextBeginPath(ctx); 
    CGContextMoveToPoint (ctx, CGRectGetMinX(rect), CGRectGetMinY(rect)); // top left 
    CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), CGRectGetMidY(rect)); // mid right 
    CGContextAddLineToPoint(ctx, CGRectGetMinX(rect), CGRectGetMaxY(rect)); // bottom left 
    CGContextClosePath(ctx); 

    CGContextSetRGBFillColor(ctx, 1, 1, 0, 1); 
    CGContextFillPath(ctx); 
} 
+0

Je suis encore un peu confus sur la façon de faire cela. Désolé, je suis encore relativement nouveau en programmation. – user804306

+1

Créez une classe objective-C qui est une sous-classe de UIView. Implémentez la méthode drawRect: dans la classe, iOS appelle drawRect: lorsque la vue doit être dessinée à l'écran. Instancier un objet de cette classe et l'ajouter à la vue de votre contrôleur de vue. Si cela n'a pas de sens alors peut-être que vous devriez obtenir quelques-unes des bases de [cette question] (http://stackoverflow.com/questions/3315577/good-iphone-programming-books). – progrmr

+0

Ok Je comprends la classe d'ajout Objective-c, mais que dois-je appeler lorsque les utilisateurs appuie sur un bouton pour dessiner le triangle personnalisé à l'écran? – user804306

-1
- (void)drawRect:(CGRect)rect { 


    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(ctx, rect); 

    // Draw a triangle 
    CGContextSetRGBFillColor(ctx, 255, 160, 122, 1); 

    CGContextBeginPath(ctx); 
    CGContextMoveToPoint (ctx, 290, 35); // top 
    CGContextAddLineToPoint(ctx, 350, 165); // right 
    CGContextAddLineToPoint(ctx, 230,165); // left 
    CGContextClosePath(ctx); 

    CGContextSetRGBFillColor(ctx, 1, 1, 1, 1); 
    CGContextFillPath(ctx); 
} 
+0

Oui))) @FelixSFD –

+0

Comment cette réponse ajoute-t-elle une nouvelle valeur à la question? Il semble que ce soit juste la réponse de programr avec des valeurs codées en dur. Aussi, c'est juste du code pur, sans une seule ligne d'explication. –

+0

Excusez-moi, Im un débutant et je voulais juste montrer mon chemin pour dessiner un triangle. Et oui, ceci est mon code d'un des projets. Peut être que cela aidera à quelqu'un d'autre ... –

0

Swift 3 équivalent pour la réponse de progrmr:

override func draw(_ rect: CGRect) { 

    guard let context = UIGraphicsGetCurrentContext() else { return } 

    context.beginPath() 
    context.move(to: CGPoint(x: rect.minX, y: rect.minY)) 
    context.addLine(to: CGPoint(x: rect.maxX, y: rect.midY)) 
    context.addLine(to: CGPoint(x: (rect.minX), y: rect.maxY)) 
    context.closePath() 

    context.setFillColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) 
    context.fillPath() 
} 
Questions connexes