2013-08-19 4 views
0

Я программист Objective C. Я разрабатываю универсальное приложение. В этом приложении я хочу использовать кварц, чтобы нарисовать квадрат, но не полностью в одном кадре, а не на кадре. В приведенном ниже кодексе есть возможность. Но это не так хорошо, потому что я хочу рисовать прямоугольники, круги и другие вещи. Итак, есть ли лучший способ привлечь такие вещи.рисование линии в нескольких кадрах с помощью Quartz 2d

-(void)drawRect:(CGRect)rect { 
    [self drawARect]; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 20.0); 
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 
    CGFloat components[] = {0.0, 0.0, 1.0, 1.0}; 
    CGColorRef color = CGColorCreate(colorspace, components); 
    CGContextSetStrokeColorWithColor(context, color); 
    if (!firstLineReady) { 
     CGContextMoveToPoint(context, 200, 200); 
     CGContextAddLineToPoint(context, x, y); 
    } 

    if (firstLineReady && !secondLineReady) { 
     CGContextMoveToPoint(context, 200, 200); 
     CGContextAddLineToPoint(context, 600, 200); 
     CGContextMoveToPoint(context, 600, 200); 
     CGContextAddLineToPoint(context, x, y); 
    } 

    if (secondLineReady && !thirdLineReady) { 
     CGContextMoveToPoint(context, 200, 200); 
     CGContextAddLineToPoint(context, 600, 200); 
     CGContextMoveToPoint(context, 600, 200); 
     CGContextAddLineToPoint(context, 600, 600); 
     CGContextMoveToPoint(context, 600, 600); 
     CGContextAddLineToPoint(context, x, y); 
    } 

    if (thirdLineReady && ! fourthLineReady) { 
     CGContextMoveToPoint(context, 200, 200); 
     CGContextAddLineToPoint(context, 600, 200); 
     CGContextMoveToPoint(context, 600, 200); 
     CGContextAddLineToPoint(context, 600, 600); 
     CGContextMoveToPoint(context, 600, 600); 
     CGContextAddLineToPoint(context, 200, 600); 
     CGContextMoveToPoint(context, 200, 600); 
     CGContextAddLineToPoint(context, x, y); 
    } 

    if (fourthLineReady) { 
     CGContextMoveToPoint(context, 200, 200); 
     CGContextAddLineToPoint(context, 600, 200); 
     CGContextMoveToPoint(context, 600, 200); 
     CGContextAddLineToPoint(context, 600, 600); 
     CGContextMoveToPoint(context, 600, 600); 
     CGContextAddLineToPoint(context, 200, 600); 
     CGContextMoveToPoint(context, 200, 600); 
     CGContextAddLineToPoint(context, 200, 200); 
     [timer invalidate];   
    } 

    CGContextStrokePath(context); 
    CGColorSpaceRelease(colorspace); 
    CGColorRelease(color); 
} 

- (void) drawARect{ 

    if (!firstLineReady) { 
     x+=speed; y+=0; 
     if (x>=600) { 
      x=600; 
      firstLineReady = YES; 
     } 
    } 

    if (firstLineReady && !secondLineReady) { 
     x+=0; y+=speed; 
     if (y>=600) { 
      y=600; 
      secondLineReady = YES; 
     } 
    } 


    if (firstLineReady && secondLineReady && !thirdLineReady ) { 
     x-=speed; y+=0; 
     if (x<=200) { 
      x=200; 
      thirdLineReady = YES; 
     } 
    } 

    if (firstLineReady && secondLineReady && thirdLineReady) { 
     x+=0; y-=speed; 
     if (y<=200) { 
      y=200; 
      fourthLineReady = YES; 
     } 
    } 
} 

Можно ли дать CGContextAddLineToPoint пользовательский шаблон как карандаш или шариковую ручку?

+1

В чем проблема? –

ответ

0
Oval 
CGRect aRect= CGRectMake(80, 80, 160, 100); 
CGContextSetRGBStrokeColor(context, 0.6, 0.9, 0, 1.0); 
CGContextSetLineWidth(context, 3.0); 
CGContextAddEllipseInRect(context, aRect); //椭圆 
CGContextDrawPath(context, kCGPathStroke); 

Diamond 
CGContextSetLineWidth(context, 2.0); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextMoveToPoint(context, 100, 100); 
CGContextAddLineToPoint(context, 150, 150); 
CGContextAddLineToPoint(context, 100, 200); 
CGContextAddLineToPoint(context, 50, 150); 
CGContextAddLineToPoint(context, 100, 100); 
CGContextStrokePath(context); 

Rectangle 
CGContextSetLineWidth(context, 2.0); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGRect rectangle = CGRectMake(60,170,200,80); 
CGContextAddRect(context, rectangle); 
CGContextStrokePath(context); 

or you can get the opensource code from github 
+0

спасибо, что ответили – d4wn1