3

2 つの異なる画像を使用して、2 つの画像ビューを重ねて表示しています。ユーザーが画像に触れて指を動かすと、上部の画像が固定半径のタッチ ポイントに沿って透明になるはずです。(PhotoChop アプリのように)。

現在、私はこの方法でそれをやっています...

  1. タッチごとに。
  2. トップ画像のCGImageから画像バッファのコピーを取得します。
  3. バッファーのアルファ チャネルを編集して、タッチ ポイントを中心とする透明な円を作成します。
  4. バッファから新しい CGImage を作成します。
  5. CGImage から UIImage を作成し、新しい UIImage をトップ イメージ ビューのイメージとして使用します。

これは機能しますが、コピーが多すぎることがわかるように、作成が含まれており、時間がかかります。

誰かが同じことをより速く行う方法を提案してもらえますか?

4

1 に答える 1

1
CGImageCreateWithMask

ユーザーが描画するときに、変更を加えて aCGBitmapContextを変更します。コンテキストを参照するリンクを保持しCGImageます。オリジナルとマスクからマスクされた画像を作成し、UIImageそれから を作成します。

CGImageしたがって はCGBitmapContextグレースケールでなければなりません。または のいずれCGImageMaskCreateCGImageCreateを使用してイメージを作成できますが、前者を使用することをお勧めします。

内部構造についてはよくわかりませんが、 を描画するたびUIImageに を参照する可能性がありますCGBitmapContext。つまり、何もコピーされないと思います。必要なのはsetNeedsDisplay、UIImage を含むビューにあるだけです。

于 2010-05-09T08:00:22.920 に答える