2012-02-16 4 views
0

enter image description hereObjective C Изменение размера области рисования

Я пытаюсь изменить размер моей области рисования до меньшего размера, но всякий раз, когда я делаю, что я имею этот вид продукции (см. Фото)

Когда я начинаю писать, он не рисует линию и просто растягивает все.

Я пытаюсь выяснить, в чем проблема, но то, что я знаю, недостаточно.

Вот мой код:

viewDidLoad:

touchDraw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"opaque.png"]]; 
    touchDraw.frame = CGRectMake(0, 0, 768, 1024); 
    [self.view addSubview:touchDraw]; 
    [self.view sendSubviewToBack:touchDraw]; 
    touchMoved = 0; 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    touchSwiped = NO; 
    UITouch *touch = [touches anyObject]; 

    endingPoint = [touch locationInView:self.view]; 
    endingPoint.y -= 35; 

} 

Прикосновения:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    touchSwiped = YES; 
    UITouch *touch = [touches anyObject]; 
    currentTouch = [touch locationInView:self.view]; 
    currentTouch.y -= 35; 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    [touchDraw.image drawInRect:CGRectMake(0, 0, 768, 1024)]; 
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
    UIImage * textureColor = [UIImage imageNamed:@"Brush_Black.png"]; 

    CGPoint vector = CGPointMake(currentTouch.x - endingPoint.x, currentTouch.y - endingPoint.y); 
    CGFloat distance = hypotf(vector.x, vector.y); 
    vector.x /= distance; 
    vector.y /= distance; 
    for (CGFloat i = 0; i < distance; i += 1.0f) { 
     CGPoint p = CGPointMake(endingPoint.x + i * vector.x, endingPoint.y + i * vector.y); 
     [textureColor drawAtPoint:p blendMode:blendMode alpha:0.5f]; 
    } 
    CGContextBeginPath(UIGraphicsGetCurrentContext()); 
    CGContextStrokePath(UIGraphicsGetCurrentContext()); 
    touchDraw.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    endingPoint = currentTouch; 

    touchMoved++; 

    if (touchMoved == 1) { 
     touchMoved = 0; 
    } 

} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if(!touchSwiped) { 
     UIGraphicsBeginImageContext(self.view.frame.size); 
     [touchDraw.image drawInRect:CGRectMake(0, 0, touchDraw.frame.size.width, touchDraw.frame.size.height)]; 
     CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
     CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 25.0); 
     UIImage * textureColor = [UIImage imageNamed:@"Brush_Black.png"]; 
     [textureColor drawAtPoint:CGPointMake(endingPoint.x, endingPoint.y) blendMode:blendMode alpha:1.0f]; 
     CGContextStrokePath(UIGraphicsGetCurrentContext()); 
     CGContextFlush(UIGraphicsGetCurrentContext()); 
     touchDraw.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 

} 
+0

Есть ли у вас отменить действие в этом проекте? Если это так, пожалуйста, напишите свой код – vinay

ответ

1

Изменение этой линии

UIGraphicsBeginImageContext(self.view.frame.size); 

как это

UIGraphicsBeginImageContext(touchDraw.frame.size); 

Это может помочь.

+0

, он работал, но когда я попытался изменить его положение, он снова дает результат растяжения – Crisn

+0

@Crisn. измените, что такое позиция ?. просьба уточнить. – Vignesh

+0

все в порядке! благодаря! я просто меняю положение касания! – Crisn

Смежные вопросы