Arc

2016-12-29 23 views
11

için köşe nasıl yapılır? Aşağıda gibi bir yay yaptım. Radius belirleyerek,Arc

CGContextAddArc(ctx, self.frame.size.width/2 , self.frame.size.height/2, 
self.radius, 2*M_PI, 3*M_PI/2-ToRad(angle), 0); 

Şimdi i kemerin köşe yuvarlak yapmak istiyorum Bitiş açısı, açı başlatın. Yani her iki ucunda da çizim çemberine ihtiyaç var. Çünkü sabit boyutları veren çerçeve ölçüleri kullanmıyorum.

enter image description here

+0

grafik kütüphanesi kalem özellikleri ayarlama olanağı sağlayan mu

Objective-C ile kolayca ayarlayabilirsiniz? Windows GDI'daki PS_ENDCAP_ROUND gibi. – MBo

cevap

9

deneyin yuvarlak üzere Grafik Devlet Parametre CGContextSetLineJoin ayarlamak için: CGContextSetLineCap(ctx, kCGLineCapRound); İşte

sorunuza araştırmalarım dayanmaktadır. Metot, drawRect: metodunda yer almakta, yönteme sadece startAngle, endAngle ve radius parametrelerini vermek için özetlemek için kısa bir yöntem yazdım. Tabii ki rafine edilebilir.

Size bu yöntemin çıktısından bir resim verdim.

- (void)drawRect:(CGRect)rect { 
    float startAngle = 0; 
    float endAngle = 60; 
    float radius = 50.0; 

    CGContextRef ctx = [self drawRoundedArcWithStartAngle:startAngle endAngle:endAngle radius:radius]; 
    CGContextStrokePath(ctx); 
} 

- (CGContextRef)drawRoundedArcWithStartAngle:(float)startAngle endAngle:(float)endAngle radius:(float)radius { 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    // [CGContextAddArc(ctx, self.frame.size.width/2 , self.frame.size.height/2, radius, 2*M_PI, 3*M_PI/2-(angle * M_PI/180), 0)]; 

    CGContextAddArc(ctx, self.frame.size.width/ 2, self.frame.size.height/2, radius, (startAngle * M_PI/180), (endAngle * M_PI/180), 0); 
    CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0); 
    CGContextSetLineWidth(ctx, 20.0f); 
    CGContextSetLineCap(ctx, kCGLineCapRound); 
    return ctx; 
} 

Umut eder!

Arc with rounding. Output from the method above.

+0

İyi çalışıyor. – Saranjith

+0

bu yanıtı sorununuzu çözüyorsa kabul edildi olarak işaretleyin @Saranjith – raki

0

Sen

CGContextSetLineCap(context, kCGLineCapRound); 

Swift

context?.setLineCap(.round) 
context?.addArc(center: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true/false) 
+0

Çalışmıyor ... – Saranjith