CG [iOSの]を知ってもらいます

CG法始まり、APIのは明らかではないNSシリーズ。これは、Graphicsクラスで同様のアンドロイドです。

ビューでは、最終的にコンテンツを描画アンドロイドグラフィックスを呼び出します。グラフィックスは、ペイントを使用して、カスタムビューの様々なプロットすることができます。

iOSのコアグラフィックス大規模な開発部門は、対応する方法を見つけることができます。

効果は同じです。プログラミングのアイデアは同じです。

Web検索からのコンテンツ。

IOS研究出会い、多くの初めCG法は、そう見つけます。
CGは、グラフィックス・コアである
コアグラフィックスの描画は、専用のAPIグループC、に基づいており
、多くの場合、石英または石英2Dは、2次元描画エンジンであり、およびMac IOSのサポートと呼ばれます。これは、低レベルの、軽量、高忠実度の2Dレンダリングを提供します。フレームは、パス描画、変換、カラー管理、オフスクリーンレンダリング、テンプレート、勾配に基づくことができます。
より一般的に使用されるの開発における石英2D次のように、スクリーンショット/カット/カスタムUIコントロールであり、石英2Dは達成することができる:
(1)グラフィックスを描画する:ライン\三角形\矩形\円\ -arc
(2)テキストを描画します
( 3)描画\生成ピクチャ(画像)
(4)。PDFを生成\読み出す
(5)。スクリーンショット\は、トリミング画像
(6)。カスタムUIコントロール

 

何1.Quartz 2D市?
•クォーツ2D 2次元テキストやグラフィックスを描画するためのPDFベースのグラフィックスライブラリを調整するために、同じ生産、あなたが得ることができる最高の解像度を使用して、任意のデバイス上で同じ描画命令することができます出力。
何を2.Quartz2D?
•クォーツ2D APIは、このようなパスベースの描画、透明度、影、カラーマネジメント、アンチエイリアシング、生成するPDF文書やPDFのメタデータへのアクセスおよびその他など、多くの機能、達成することができ
3.Quartz2Dと何CoreGraphicを関係
•クォーツ2D APIでは、これらのデータ型のように多く、コアグラフィックフレームワークの一部であり、方法はCGのに始めています。多くの場合、クォーツ2Dは(クォーツ)コアグラフィックスと二つの用語は互換的に使用が表示されます
、それがどの機能4.Quartz2D?
•クォーツ2D解像度に依存しないにかかわらず、対象デバイスの最終延伸の、クォーツ2Dグラフィックスを使用するので、デバイス
5.Coreグラフィックは何ですか?
•コアグラフィックフレームワークは、第二のみのUIKitや財団への描画操作、フレームワーク、すべての重要性のために使用することができるCベースのAPIのセットで
使用何6.Coreグラフィック?
•のUIKitを使用した場合あなたは、ボタン、ラベルやのUIViewの他のサブクラスを作成するときに、UIKitのコアグラフィックスは画面に描画するためにこれらの要素を使用します。また、たUIEvent(UIKitの中にイベント処理クラス)もあり、画面上のタッチイベントの位置判断するために、コアグラフィックスを使用する
コアグラフィックの7どのように導入を?
•UIKitはコアグラフィックス、場合導入された<のUIKit / Uikit.h>、コアグラフィックスフレームを自動的に組み込まれる、すなわちUIKitのメインフレーム・ヘッダコアグラフィックス内に導入さに依存するので<CoreGraphics' / CoreGraphics.h>
•開発者はコアグラフィックスCインタフェースの底部に達していないために、内部のUIKitコアグラフィックスAPIの一部をカプセル化し、迅速に共通のインターフェース要素を生成することができます。時々 、しかし、コアグラフィックCインターフェイスの直接使用は、カスタムインタフェース要素を作成するように、非常に必要と非常に有益である
違いは何の付加グラフィック及び画像に?
---グラフィックス:方法で形状がパスに記載しました、アプリケーションが実行され、リアルタイムレンダリング(描画/胸が張り裂ける)形状
---画像:ピクセル行列はバイナリデータが実行されているアプリケーションに記載され、ピクセルのアレイ一つずつ、画面上に直接描画します上で
、それは通常より高い画像よりもグラフィックス性能を簡単に確認することができ
、図面には?どのように描画する場所--Quartz2Dの描画に使用されるが、?
•どこ描画?
1.グラフィックスコンテキスト(グラフィックスコンテキスト)
•プロットするには?
1.Quartz 2D座標系
2.描画順序の
3.UIViewのdrawRect:メソッド
4.Quartz 2Dメモリ管理
は何ですか?グラフィックスコンテキスト(描画対象を)
•グラフィックスコンテキストは、データ型(CGContextRef)で、石英を描画する画像をカプセル化出力デバイス。出力デバイスは、PDFファイル、ビットマップまたはディスプレイウィンドウであってもよいです
•すべてのオブジェクトは、グラフィックスコンテキストに描画された石英
石英で描画する場合は•、すべてのデバイスの特性は、グラフィックスコンテキストに含まれています。言い換えれば、我々は単に別のグラフィックスコンテキストクォーツ描画順序に指定することができ、同じ画像が異なるデバイス上に描画することができます。関連するすべてのコンピューティングデバイスを必要とせずに、私たちのためにクォーツすることにより、これらを完了するために、
異なるデバイス上で描画することができ、別のコンテキストを指定し、そこにあるいくつかのその文脈それ?
1.Bitmapグラフィックスコンテキストの
2.pdfグラフィックスコンテキスト
3.Windowグラフィックスコンテキスト
4.Layerグラフィックスコンテキスト
5.Printerグラフィックスコンテキスト

グラフィックスコンテキストの使用方法何?含まれてい?????
•グラフィックスコンテキストは、描画対象を表します。これは、パラメータおよびデバイス関連情報の描画命令、描画のための完全な描画システム含まれている
グラフィックスコンテキストは、基本的な描画は、色、面積の縮小、線幅とスタイル情報、フォント情報、および他の混合モードとして属性を定義•
アプリケーションIOSが•あなたは、画面上に描画したい場合、あなたはそれがのdrawRectだのUIViewオブジェクトを作成する必要があり、実現:メソッドを。閲覧者のdrawRect:(A詳細な説明Appleの公式ドキュメントに移動してくださいのdrawRect)画面とそのコンテンツのニーズに表示されたときに呼び出されるメソッドは、ビューで更新される
カスタムのdrawRectを呼び出すには•:リアビュー・オブジェクトに自動的に構成し、グラフィックスをすぐに描画操作を行うために、環境
•構成の一部として、ビューは現在の描画環境グラフィックスコンテキストのために作成されたオブジェクト。現在のグラフィックスコンテキストを取得することができますUIGraphicsGetCurrentContext()を呼び出すことによって、


次のように開発を:
:あなたはiOSアプリケーションを開発する場合は1を、私たちは、ほとんどがコントロールを提供UIKitフレームワークで使用し、その座標は以下に記載されている
(0,0)•起源画面の左上隅で、Xは、軸、Yは前方に延びる軸右前方方向に延びる

IOSのピクセル解像度は、ハードウェアによって変化する•、iPhone4のは最初、960のピクセル解像度を網膜画面を導入します* 640、ちょうど世代のiPodとiPhoneピクセル解像度(480 * 320)を2回前
。•
。•描画するときに、考えることを「ポイント」の概念を使用し、代わりにピクセル。すなわち、システム描画座標、ハードウェアピクセル座標系ではない点である

これらのデバイスの異なる画素解像度が•が、座標系の使用は、(点で)変化しないままです。iPhone4の上で、ポイントは2つのピクセルの幅で描画される

•注:グラフィックスコンテキスト、または、UIの方法の開始時に取得された他のUIGraphicsGetCurrentContextを使用する場合場合、描画せずに座標変換を


描画Quartz2Dを使用する場合、しかし、2.次のように座標系を説明し、のUIKit異なるとする座標系である::
•クォーツは、システムがデフォルトである座標:左下隅の原点(0、0)。徐々に座標値をX軸に沿って左から右へ増加;徐々にYに沿って下から上へ増加して値を座標軸
•デフォルトを使用して、いくつかの技術は、そのグラフィックスコンテキストを設定する際に、システムがクォーツと異なる座標があります。最も一般的には、左上隅に座標系の原点の変形例であり、徐々に座標値をY軸に沿って上から下に増加します。例:グラフィックUIGraphicsGetCurrentContext UIViewの方法を参照し、コンテキストは、この座標系を使用することである返し図--->



Quartz2D変換は以下の座標:
システムコンテキストを調整することができる回転方法の原点に対する相対1.CGContextRotateCTM(CGContextRef C、CGFloat角)
2.CGContextTranslateCTM(CGContextRef C、CGFloat TX、 CGFloat TY) 方法は、座標系コンテキストの原点に対して平行移動することができる
3.CGContextScaleCTM(CGContextRef C、CGFloat SX、 CGFloat SY) メソッドは、システムコンテキスト座標スケーリングすることができる
:•注
使用して、前に座標変換を-現在のコンテキスト状態を保存CGContextSaveGState(CGContextRef c)は
-保存されたコンテキスト状態を復元することができます前に、後にCGContextRestoreGState(CGContextRef C)を使用して座標変換を


Quartz2D UIViewの描き方
サブクラスのdrawRectでオーバーライドする場合•のUIViewを:ときの方法、iOSの自動グラフィックスコンテキストの準備ができて、UIGraphicsGetCurrentContextを(呼び出すことによって取得することができます)
•UIViewのをリフレッシュする必要または再描画、のdrawRect限り:メソッドが呼び出されるので、のdrawRect:コール高周波を
•ことを注意:setNeedsDisplayを再描画するために呼び出されるべきではなく、直接のdrawRect:、setNeedsDisplayを呼び出すことはできませんが、自動的にのdrawRectを呼び出します:

のdrawRect:メソッド注::::
•のdrawRectは:のUIViewControllerののviewDidLoadメソッドloadViewメソッドと2の後に呼び出されます
•初期設定のUIView、のdrawRect中に何CGRectの場合:自動的に起動されないことはありません
:あなたはUIViewのcontentModeプロパティ値UIViewContentModeRedrawを設定した場合、それは自動的にすべてのフレーム変更時のdrawRectを呼び出します•
•あなたはUIViewの図面を使用する場合は、のみdrawRect:メソッドに対応するCGContextRefを取得してプロットしました。他の方法で取得したCGContextRef描画に使用することはできません

。Quartz2DにC言語、およびメモリを管理する必要の一部のフレームワークを
それ以外の場合は、•使用目的関数が作成した「コピー」を「作成」または含んで、使用後に解放されなければなりませんメモリリークが
含まれている「作成」または「コピー」しないオブジェクトを取得する関数を使用する•、あなたは解放する必要はありません
あなたがオブジェクトを保持している場合、使用中もはや•アウト解放する必要があると。石英2D関数は、指定されたオブジェクトを保持および放出するために使用することができます。例えば、CGColorSpaceオブジェクト作成場合、オブジェクトを保持し、放出する機能CGColorSpaceRetainとCGColorSpaceReleaseを使用します。また、Core FoundationのCFRetainとCFReleaseを使用することができます。これらの機能のためにNULLを渡すことができないことに注意

おすすめ

転載: www.cnblogs.com/mamamia/p/12170649.html