2015-06-11 2 views
1

Я делаю приложение, похожее на приложение для рисования, и хочу нарисовать изображение в том месте, где пользователь прикасается. Я могу нарисовать изображение по адресу О.К. с этим кодом:Несколько CGContextRefs?

CGContextRef ctx = UIGraphicsGetCurrentContext(); 

CGRect imageRect = CGRectMake(self.locationOfTouch.x, self.locationOfTouch.y, 50, 50); 
CGFloat centerX = self.locationOfTouch.x - (imageRect.size.width/2); 
CGFloat centerY = self.locationOfTouch.y - (imageRect.size.height/2); 
// To center image on touch loc 
imageRect.origin.x = centerX; 
imageRect.origin.y = centerY; 

UIImage * imageImage = [UIImage imageNamed:@"image.png"]; 
CGImageRef imageRef = imageImage.CGImage; 
CGContextBeginPath(ctx); 
CGContextDrawImage(ctx, imageRect, imageRef); 

Но, когда я снова нажимаю, изображение перемещается в новое место. Я бы хотел, чтобы он «дублировал» каждый раз, когда он был использован. Как я могу это сделать?

ответ

1

Вы можете попробовать это.

- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx 
{ 
    CGPoint locationPoint = [self.touch locationInView:self]; 
    CGRect imageRect = CGRectMake(locationPoint.x, locationPoint.y, 50, 50); 
    CGFloat centerX = locationPoint.x - (imageRect.size.width/2); 
    CGFloat centerY = locationPoint.y - (imageRect.size.height/2); 
    imageRect.origin.x = centerX; 
    imageRect.origin.y = centerY; 
    UIImage * imageImage = [UIImage imageNamed:@"add.png"]; 
    UIImageView *imageView = [[UIImageView alloc ] initWithFrame:imageRect]; 
    imageView.image = imageImage; 
    [layer addSublayer:imageView.layer]; 
} 

он может работать.

+0

Это работает, но фон - это черный цвет, а не изображение, которое у меня было. Даже код фона изображения ничего не делает. Он по-прежнему черный – Minebomber