1

我有两个 ImageView,一个称为 imageView,另一个称为 subView(它是 imageView 的子视图)。

我想将这些视图上的图像混合在一起,用户可以用平底锅切换混合的 alpha。我的代码可以工作,但是现在代码很慢,因为每次移动平移手势时我们都在重绘图像。有没有更快/更有效的方法来做到这一点?

奖金问:我想允许我的 subView 图像放大绘制。目前我已经将我的 subView 设置为 UIViewContentModeCenter,但是我似乎无法使用这种内容模式绘制我的图像的一部分。有没有办法解决?

我的drawrect:

- (void)drawRect:(CGRect)rect
{
float xCenter = self.center.x - self.currentImage1.size.width/2.0;
float yCenter = self.center.y - self.currentImage1.size.height/2.0;

subView.alpha = self.blendAmount;  // Customize the opacity of the top image.

UIGraphicsBeginImageContext(self.currentImage1.size);

CGContextRef c = UIGraphicsGetCurrentContext();

CGContextSetBlendMode(c, kCGBlendModeColorBurn);
[imageView.layer renderInContext:c];

self.blendedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.blendedImage drawAtPoint:CGPointMake(xCenter,yCenter)];

}
4

1 回答 1

1

您需要使用 GPU 进行图像处理,这比使用 CPU 快得多(就像您现在正在做的那样)。

您可以使用非常快速且易于使用但需要 iOS 5 的Core Image框架,或者您可以直接使用Open GL,但您需要有经验并了解一些有关 Open GL 着色的知识。

于 2012-06-28T21:57:36.887 回答