Core Graphics   >     CGImage   >   init(maskWidth:height:bitsPerComponent:bitsPerPixel:bytesPerRow:provider:decode:shouldInterpolate:)
イニシャライザ
init(maskWidth:height:bitsPerComponent:
bitsPerPixel:bytesPerRow:provider:decode:
shouldInterpolate:)
データプロバイダが提供するデータからビットマップイメージマスクを作成します。
宣言
パラメータ
width(幅) | 必要なイメージマスクの幅(ピクセル単位)。 |
heught(高さ) | 必要なイメージマスクの高さ(ピクセル単位)。 |
bitsPerComponent | ソースピクセル内の重要なマスキングビットの数。たとえば、ソースイメージが 8 ビットマスクである場合、成分ごとに 8 ビットを指定します。イメージマスクは、成分ごとに 1,2,4 または 8 ビットでなければなりません。 |
bitsPerPixel | ソースピクセル内のビットの合計数。 |
bytesPerRow | イメージマスクの各水平行に使用するバイト数。 |
provider | イメージマスクのデータソース。 |
decode | 通常、復号配列は不要で、NULL を渡す必要があります。 |
shouldInterpolate | エッジ平滑化アルゴリズムをイメージマスクに適用するかどうかを指定するブール値。 |
戻り値
ビットマップイメージマスク。CGImageRelease を呼び出してこのオブジェクトを解放する責任があなたにはあります。
議論
ビットマップイメージマスクは、アーティストがシルクスクリーンやサインを使用するのと同じ方法、または画家がステンシルを使うのと同じ方法で使用されます。ビットマップは、色が転送されるマスクを表します。ビットマップ自体には色がありません。グラフィックス状態で現在設定されている塗りつぶしの色からその色を取得します。
ビットマップイメージマスクを使用してコンテキストに描画する場合、マスクは現在の塗りつぶしの色がイメージの長方形に適用される場所と方法を決定します。マスクの各サンプル値は、現在の塗りつぶしの色が特定の場所でどれだけマスクされるかを指定します。効果的に、サンプル値はマスクの不透明度を指定します。値が大きいほど、不透明度が高くなり、ページに適用される色が少なくなります。
イメージマスクは、成分ごとに 1,2,4 または 8 ビットでなければなりません。1 ビットマスクの場合、サンプル値 1 は、マスクされたマスクの部分を指定します。これらの部分は、現在の塗りつぶしの色をブロックします。サンプル値 0 は、マスクされていないマスクの部分を指定します。これらの部分は、マスクがペイントされたときのグラフィックス状態の現在の塗りつぶし色を示します。サンプル値は逆アルファとして考えることができます。つまり、1 の値は透明で 0 は不透明です。
成分あたり 2,4,8 ビットのイメージマスクの場合、各成分は以下の式を使用してスケールされる 0〜1 の範囲にマッピングされます。
1/(2^bits per component – 1)
たとえば、4 ビットマスクの値の範囲は 0〜15 です。これらの値は、各成分の範囲が 0〜1 になるように 1/15 にスケールされます。0 または 1 に再スケールする成分値は、1 ビットイメージマスクと同じように動作します。0 と 1 の間の値は逆アルファとして機能します。つまり、塗りつぶしの色は、(1 - MaskSampleValue) のアルファ値を持つかのようにペイントされます。たとえば、8 ビットマスクのサンプル値が 0.8 になると、現在の塗りつぶし色は、アルファ値が 0.2、つまり(1-0.8) であるかのようにペイントされます。