1

アプリに少し機能を追加したいのですが、CGLayerを使用するのが最善の方法だと思いますが、(いくつかの基本的なチュートリアルを除いて)これまでQuartzの描画を行ったことがありません。

私の意図は、アプリが描画する画像の全体像(パラメーターに基づく基本的な幾何学的形状)をビューの上半分に表示し、その画像の拡大部分をビューの下半分に表示することです。ユーザーが一番上の画像に触れた場所。ズームインした部分を高解像度で表示したいので、たとえば640 x 640 CGLayerに画像を描画してから、ビューの上部320 x 320の半分にその完全なレイヤーを描画する必要があると考えています(スケーリングされています)。収まるように下に)、ビューの左下160 x 160でユーザーが触れた関連部分ですが、拡大縮小されていないため、メイン画像の4分の1が表示されます。

ユーザーがメインビューの周りで指を動かすと、左下の部分ビューがCGLayerから再描画されるため、新しい画像のレンダリングは行われず、CGLayerの描画のみが行われます。

私の経験の浅い脳が見逃したかもしれないこのアプローチの問題を誰かが見ることができますか?

タ、ジュールズ。

4

1 に答える 1

2

CALayer を見てください。contentsRect パラメータです。それはあなたが望んでいることを正確に行うためのかなり簡単な方法を提供します。次のように、画像ビューのレイヤーのコンテンツをズーム ビュー レイヤーにコピーできます。

[[zoomView layer] setContents:[[tapImageView layer] contents]];

次に、次のように contentsRect を設定します。

[[zoomView layer] setContentsRect:CGRectMake(x, y, 0.25, 0.25)];

x と y を計算し、これを touchesMoved で呼び出します。このコードで 0.25 に設定されている幅と高さは、ズーム ビューに表示される画像の割合を表します。

説明が必要な場合はお知らせください。

于 2009-11-24T22:52:49.737 に答える