2011-07-14 33 views
26

Tengo un solucionador de triángulos, quiero una forma de usar los valores que obtengo de la respuesta para dibujar un triángulo en la pantalla que coincide con él.Cómo dibujar un triángulo programáticamente

+0

Por "solucionador de triángulos" Supongo que quieres decir algo en el que le dices dos lados de un triángulo y calcula el tercero. ¿Es un triángulo rectángulo? – Schwern

+0

Un poco, tengo una manera para que el usuario ingrese cualquier combinación de información sobre cualquier triángulo. Tales como dos lados y un ángulo, tres lados, dos ángulos y un lado. Y todos los triángulos correctos también. – user804306

Respuesta

80

Si subclase A UIView puede implementar algo como esto en drawRect para dibujar un triángulo:

-(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

Todavía estoy un poco confundido sobre cómo hacer esto. Lo siento, todavía soy bastante nuevo en la programación. – user804306

+1

Crea una clase Object-C que es una subclase de UIView. Implemente el método drawRect: en la clase, iOS llamará a drawRect: cuando la vista debe dibujarse en la pantalla. Crea una instancia de un objeto de esa clase y agrégalo a la vista de tu controlador de vista. Si eso no tiene sentido, entonces tal vez deba obtener algunos de los conceptos básicos de [esta pregunta] (http://stackoverflow.com/questions/3315577/good-iphone-programming-books). – progrmr

+0

Ok Entiendo que se agregue la clase Objective-c, pero ¿a qué llamaría cuando los usuarios presionen un botón para dibujar el triángulo personalizado en la pantalla? – 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

Sí))) @FelixSFD –

+0

¿Cómo agrega esta respuesta un valor nuevo a la pregunta? Parece que es solo la respuesta del programador con valores codificados. También es solo código puro, sin una sola línea de explicación. –

+0

Disculpe, soy un principiante y solo quería mostrar mi camino para dibujar un triángulo. Y sí, este es mi código de uno de los proyectos. Puede ser que ayude a cualquier otra persona ... –

0

Swift 3 equivalente para progrmr 's respuesta:

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() 
} 
Cuestiones relacionadas