2010-03-29 68 views
3

我正在制作一个iPhone应用程序,从相机加载图像,然后用户可以从库中选择第二个图像,移动/缩放/旋转第二个图像,然后保存结果。我在IB中使用两个UIImageView作为占位符,然后在触摸/捏合时应用转换。iPhone:如何使用CGContextConcatCTM正确保存转换后的图像?

问题出现在我必须将两个图像保存在一起时。我使用第一张图像的大小的矩形并将其传递给UIGraphicsBeginImageContext。然后我试图使用CGContextConcatCTM,但我不明白它是如何工作:

CGRect rect = CGRectMake(0, 0, img1.size.width, img1.size.height); // img1 from camera 
UIGraphicsBeginImageContext(rect.size); // Start drawing 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextClearRect(ctx, rect); // Clear whole thing 
[img1 drawAtPoint:CGPointZero]; // Draw background image at 0,0 
CGContextConcatCTM(ctx, img2.transform); // Apply the transformations of the 2nd image 

但我下一步需要做什么?什么信息被保存在img2.transform矩阵中? CGContextConcatCTM的文档对我来说并没有多大的帮助。 现在我试图通过使用三角函数(在this answer的帮助下)计算点和角度来解决它,但是由于转换已经存在,做一个更容易,更优雅的方式来做到这一点,对吗?

+0

我想问题是,Quartz应用从左上角转换:/我仍然不知道如何解决它。 – kubbing 2011-11-14 14:10:10

回答