1

iOS でペイント アプリの元に戻す機能を実行しようとしています。私のアプローチは、各描画(線、直線、正方形、円)の後に、描画が配列に追加されるため、元に戻すときに配列の lastObjectIndex をポップ/削除してから、配列の内容を画像表示。私は NSMutableArray と UIImage を使用しており、UIGraphicsGetImageFromCurrentImageContext を使用しています。私の質問は、すべての画像配列を 1 つの UIImageView に表示するにはどうすればよいですか?

これが私のコードです:

imgArray = [[NSMutableArray alloc] init];

UIImage *tempImg = [[UIImage alloc] init];
tempImg = UIGraphicsGetImageFromCurrentImageContext();
[imgArray addObject:tempImg];

UIGraphicsEndImageContext();

UIGraphicsBeginImageContext(mainImage.frame.size);
[mainImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
[tempImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) blendMode:kCGBlendModeNormal alpha:opacity];
mainImage.image = tempImg; //UIGraphicsGetImageFromCurrentImageContext();
tempImage.image = nil;
UIGraphicsEndImageContext();
4

1 に答える 1

0

私が理解しているように、あなたのモデルは、たとえば最初の背景とレイヤーのスタックを備えたグラフィックアプリであり、各レイヤーにはオブジェクトまたはオブジェクトがあります。

もしそうなら、保存された画像はこのスタックを表します。スタックの n-1 を表す一時画像、次に現在の画像を保持して、レンダリングを高速化することができます。実際、私がすることは、一時画像をビューに置き、現在アクティブなオブジェクトを別のビューに一時画像の上に置くことです。

元に戻す場合は、まず現在アクティブなオブジェクトを消去できます。次に 2 回目の取り消しを行うと、イメージ 0 から始めてベース イメージの上に各レイヤーを描画することで、一時的な画像を再レンダリングする必要があります。これが機能する理由は、描画されたビットを除いて各レイヤーが透明であることです。

一時イメージを作成するには、ビットマップ コンテキストを使用し、コードでレイヤーを適用します。

于 2013-05-20T12:45:00.353 に答える