17

線や形などを描くと、iOSで「現在のグラフィックスコンテキスト」が表示されます。

正確には「現在のグラフィックスコンテキスト」とは何ですか-私は30,000フィートの説明を探しています。

今のところ、UIコードをコピーして貼り付けるだけで、何をしているのか正確にはわかりません。

4

3 に答える 3

17

グラフィックコンテキストは、描画状態に関する情報が保存される場所です。これには、塗りつぶしの色、線の色、線の幅、線のパターン、巻き取り規則、マスク、現在のパス、透明度レイヤー、変換、テキスト変換などが含まれます。CoreGraphics呼び出しを使用する場合、すべての関数に使用するコンテキストを指定します。これは、一度に複数のコンテキストを使用できることを意味しますが、通常は1つしか使用しません。UIKitレイヤーには、「現在の」グラフィックスコンテキストの概念があります。これは、すべてのUIKitレベルの描画呼び出し(-[UIColor set]またはUIBezierPath描画など)で使用されるグラフィックスコンテキストです。現在のコンテキストはコンテキストのスタックに保存されるため、一部の図面用に新しいコンテキストを作成し、それを終了すると前のコンテキストが復元されます。通常、コンテキストは無料で入手できます-[UIView drawRect:]CALayer表示関連のメソッドの内部ですが、それ以外の場合はそうではありません。

以前は、「現在の」コンテキストはアプリケーション全体のグローバル状態であったため、メインスレッドの外部に触れるのは安全ではありませんでした。iOS 4.0(私は信じています)の時点で、これはスレッドローカル状態になり、UIKitレベルの描画メソッドはバックグラウンドスレッドで安全に使用できるようになりました。

于 2011-01-23T06:41:03.160 に答える
16

OSには、描画するビットマップやビュー、使用する縮尺やその他の変換、最後の色など、すべてのCG描画コマンドで指定したくない描画状態などの情報を保存する場所が必要です。指定したなど。

コンテキストは、各CG呼び出しに、現在の描画呼び出しのこれらすべての「もの」を見つける場所を指示します。まったく同じ描画呼び出しに異なるコンテキストを与えると、その呼び出しは、異なる色、異なる縮尺などで、完全に異なるビューの異なるビットマップに描画される可能性があります。

于 2011-01-23T05:54:44.173 に答える
1

基本的には、プラットフォーム(iOS、Android、JavaME、その他多数)のクラスであり、そのプラットフォームに提供されているすべての描画/表示機能へのアクセスを提供します。もちろん、プラットフォームによって少し異なりますが、これは30,000フィートの説明です:)

于 2011-01-23T05:11:29.390 に答える