Objective-c UIImageView绘图

时间:2013-12-26 16:46:32

标签: objective-c uiimageview drawing

我有两个UIImageViews。第一个(mainImage)与视图控制器的大小几乎相同。我也有一个较小的第二个(tempAddImage)。我想要做的是在完全相同的地方和大小上绘制小图片的大图片。我的以下代码可以完成这项工作,但会使较小的图像成为全尺寸。

UIGraphicsBeginImageContext(self.tempAddImage.frame.size);

[self.mainImage.image drawInRect:CGRectMake(0, 0, self.mainImage.frame.size.width,    
self.mainImage.frame.size.height)
blendMode:kCGBlendModeNormal alpha:1.0];

[self.tempAddImage.image drawInRect:CGRectMake(0, 0, self.mainImage.frame.size.width, 
self.mainImage.frame.size.height)
blendMode:kCGBlendModeNormal alpha:opacity];

self.mainImage.image = UIGraphicsGetImageFromCurrentImageContext();

[self.undoArray addObject:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();

经过多次尝试后才有效:)非常感谢:

    UIGraphicsBeginImageContext(self.mainImage.frame.size);
    [self.mainImage.image drawInRect:CGRectMake(0, 0, self.mainImage.frame.size.width, self.mainImage.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
    [self.tempAddImage.image drawInRect:CGRectMake(self.tempAddImage.frame.origin.x, self.tempAddImage.frame.origin.y - (self.navigationController.navigationBar.frame.size.height + 20.0f), self.tempAddImage.frame.size.width, self.tempAddImage.frame.size.height) blendMode:kCGBlendModeNormal alpha:opacity];
    self.mainImage.image = UIGraphicsGetImageFromCurrentImageContext();
    [self.undoArray addObject:UIGraphicsGetImageFromCurrentImageContext()];
    UIGraphicsEndImageContext();

2 个答案:

答案 0 :(得分:0)

您正在两个drawInRects中使用mainImages帧大小。

答案 1 :(得分:0)

也许是这样的:

UIImage *tmpImage = [UIImage imageNamed:@"tmp"];
UIImageView *tmpImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0,tmpImage.size.width, tmpImage.size.height)];
tmpImageView.image = tmpImage;

[mainImg addSubview:tmpImageView];

代码未经过测试..