1

1つはimageViewと呼ばれ、もう1つはsubView(imageViewのサブビュー)と呼ばれます。

これらのビューの画像をブレンドして、ユーザーがブレンドのアルファをパンで切り替えることができるようにしたいと考えています。私のコードは機能しますが、現在、パン ジェスチャを動かすたびに画像を再描画しているため、コードが遅くなります。これを行うためのより高速で効率的な方法はありますか?

ボーナス Q: subView 画像を拡大して描画できるようにしたいです。現在、subView を UIViewContentModeCenter に設定していますが、このコンテンツ モードでは画像の拡大部分を描画できないようです。これを回避する方法はありますか?

私のドローレクト:

- (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

CPUを使用するよりもはるかに高速な画像処理にGPUを使用する必要があります(現在行っているように)。

非常に高速で使いやすいCore Imageフレームワークを使用できますが、iOS 5 が必要です。また、 Open GLを直接使用することもできますが、経験と Open GL シェーディングに関する知識が必要です。

于 2012-06-28T21:57:36.887 に答える