CGPath

2011. 06. 25
●概要

グラフィックスパスは、線または形状といった一連の数学的な記述法です。

CGPathRefは、不変グラフィックスパスを表す不透過型を定義します。

CGMutablePathRefは、可変グラフィックスパスを表す不透過型を定義します。

CGPathRefもCGMutablePathRefのどちらもパスを描画する関数を定義します。

グラフィックスコンテキストにQuartzのお明日を描画するには、CGContextAddPathを呼び出すことによってグラフィックスコンテキストにパスを追加し、それからコンテキストの描画関数の一つを呼び出します。(CGContextを参照)

グラフィックスパス内の各図は、直線とベジェ曲線の組み合わせで構成され、サブパスと呼ばれています。

サブパスは、サブパスの構成を単一の手順で表すパス要素の順序付きセットを持っています。
(例えば、矩形のある角から別の角への線分がパス要素です)

全てのサブパスは始点を含んでおり、サブパス内の最初の点になります。

パスはまた現在のポイントも保持しており、最後のサブパス内の最後の点になります。

可変パスに新しいサブパスを追加するには、アプリケーションは通常、CGPathMoveToPointを呼び出してサブパスの始点と最初の現在のポイントを設定し、続いてサブパスに線分や曲線を追加するCGPathAdd*シリーズの呼び出しを行います。

線分または曲線がサブパスに追加されると、サブパスの現在のポイントが最後に追加された線分または曲線の終点に更新されます。

サブパスの直線と曲線は常に接続されていますが、線の閉集合を形成する必要はありません。

アプリケーションはCGPathCloseSubpathを呼び出すことによって、サブパスを明示的に閉じます。

サブパスを閉じると、サブパスの始点を終端とさせる線分を追加し、そして線を描画する方法も変更されます。
(詳細は『Quartz 2D Programming Guide』の『Paths』を参照してください)



●タスク別の関数

●パスの生成と管理


CGPathCreateMutable
CGPathCreateMutableCopy
CGPathCreateCopy
CGPathRelease
CGPathRetain

●Quartzのパスの変更


CGPathAddArc
CGPathAddArcToPoint
CGPathAddCurveToPoint
CGPathAddLines
CGPathAddLineToPoint
CGPathAddPath
CGPathAddQuadCurveToPoint
CGPathAddRect
CGPathAddRects
CGPathApply
CGPathMoveToPoint
CGPathCloseSubpath
CGPathAddEllipseInRect

●Quartzのパスに関する情報の取得


CGPathEqualToPath
CGPathGetBoundingBox
CGPathGetPathBoundingBox
CGPathGetCurrentPoint
CGPathGetTypeID
CGPathIsEmpty
CGPathIsRect
CGPathContainsPoint



●関数



●コールバック



●データ型



●定数

CGPathDrawingMode

enum CGPathDrawingMode {
    kCGPathFill,
    kCGPathEOFill,
    kCGPathStroke,
    kCGPathFillStroke,
    kCGPathEOFillStroke
};

typedef enum CGPathDrawingMode CGPathDrawingMode;

関数CGContextDrawPathにパスの描画モードの定数を渡して、どのようにQuartzがグラフィックスコンテキストの現在のパスを描画するかを指定します。

kCGPathFill
非ゼロワインディング規則を使用して、パス内に含まれている領域を描画します。

kCGPathEOFill
偶奇規則を使用してパス内の領域を描画します。

kCGPathStroke
パスに沿って線を描画します。

kCGPathFillStroke
First fill and then stroke the path, using the nonzero winding number rule.
非ゼロワインディング規則を使用して、塗りつぶした後にパスの線を描きます。

kCGPathEOFillStroke
偶奇規則を使用して、塗りつぶした後にパスの線を描きます。

※ 非ゼロワインディング規則や偶奇規則についての詳細は『Quartz 2D Programming Guide/Paths/Painting a Path/Filling a Path』や『Adobe/ActionScript 3.0 開発ガイド/表示/描画 API の使用/描画 API の高度な使用/ワインディング規則の定義』などを参照してください。



参考文献

CGPath Reference

猫にはわからないプログラミング/不透過型(opaque data type)

Quartz 2D Programming Guide/Paths/Painting a Path/Filling a Path

Adobe/ActionScript 3.0 開発ガイド/表示/描画 API の使用/描画 API の高度な使用/ワインディング規則の定義

CGContext

2011. 06. 22
●概要

CGContextRef不透過型は、Quartz 2Dの描画を表すのに用いられます。

グラフィックスコンテキストには描画変数と、アプリケーションのウィンドウやビットマップ画像、PDFドキュメント、またはプリンタなどの用途によって、ページを塗るのに必要となる全てのデバイス固有情報が含まれています。

Quartzのグラフィックスコンテキストを生成する関数か、CarbonやCocoa、またはPrintingフレームワークによって提供される高レベルの関数を使用することによって、グラフィックスコンテキストを取得することができます。

Quartzはビットマップ画像やPDFを含む、Quartzのグラフィックスコンテキストの様々な目的に応じた生成関数を提供します。

Cocoaフレームワークは、ウィンドウのグラフィックスコンテキストを取得するための関数を提供します。

Printingフレームワークは、送信先のプリンタに適切なグラフィックスコンテキストを取得するための関数を提供します。



●タスク別の関数

●グラフィックスコンテキストの管理


CGContextFlush
CGContextGetTypeID
CGContextRelease
CGContextRetain
CGContextSynchronize

●現在のグラフィックス状態の保存と復元


CGContextSaveGState
CGContextRestoreGState

●グラフィックス状態変数の取得と設定


CGContextGetInterpolationQuality
CGContextSetFlatness
CGContextSetInterpolationQuality
CGContextSetLineCap
CGContextSetLineDash
CGContextSetLineJoin
CGContextSetLineWidth
CGContextSetMiterLimit
CGContextSetPatternPhase
CGContextSetFillPattern
CGContextSetRenderingIntent
CGContextSetShouldAntialias
CGContextSetStrokePattern
CGContextSetBlendMode
CGContextSetAllowsAntialiasing
CGContextSetAllowsFontSmoothing
CGContextSetShouldSmoothFonts
CGContextSetAllowsFontSubpixelPositioning
CGContextSetShouldSubpixelPositionFonts
CGContextSetAllowsFontSubpixelQuantization
CGContextSetShouldSubpixelQuantizeFonts

●パスの構成


これらの関数は現在のパスのジオメトリを定義するために使用されます。
パスの定義についての詳細は『CGPath Reference』を参照してください。

CGContextAddArc
CGContextAddArcToPoint
CGContextAddCurveToPoint
CGContextAddLines
CGContextAddLineToPoint
CGContextAddPath
CGContextCopyPath
CGContextAddQuadCurveToPoint
CGContextAddRect
CGContextAddRects
CGContextBeginPath
CGContextClosePath
CGContextMoveToPoint
CGContextAddEllipseInRect

●パスの塗装


これらの関数は、現在のパスに沿うか埋めるために使用されます。

CGContextClearRect
CGContextDrawPath
CGContextEOFillPath
CGContextFillPath
CGContextFillRect
CGContextFillRects
CGContextFillEllipseInRect
CGContextStrokePath
CGContextStrokeRect
CGContextStrokeRectWithWidth
CGContextReplacePathWithStrokedPath
CGContextStrokeEllipseInRect
CGContextStrokeLineSegments

●パスに関する情報の取得


CGContextIsPathEmpty
CGContextGetPathCurrentPoint
CGContextGetPathBoundingBox
CGContextPathContainsPoint

●クリッピングパスの変更


CGContextClip
CGContextEOClip
CGContextClipToRect
CGContextClipToRects
CGContextGetClipBoundingBox
CGContextClipToMask

●カラー、カラースペース、シャドウ値の設定


CGContextSetAlpha
CGContextSetCMYKFillColor
CGContextSetFillColor
CGContextSetCMYKStrokeColor
CGContextSetFillColorSpace
CGContextSetFillColorWithColor
CGContextSetGrayFillColor
CGContextSetGrayStrokeColor
CGContextSetRGBFillColor
CGContextSetRGBStrokeColor
CGContextSetShadow
CGContextSetShadowWithColor
CGContextSetStrokeColor
CGContextSetStrokeColorSpace
CGContextSetStrokeColorWithColor

●ユーザ空間の変換


これらの関数は、グラフィックスコンテキスト内での現在の変換行列(CTM)の検査や変更をすることができます。

CGContextConcatCTM
CGContextGetCTM
CGContextRotateCTM
CGContextScaleCTM
CGContextTranslateCTM

●透明度レイヤの使用


CGContextBeginTransparencyLayer
CGContextBeginTransparencyLayerWithRect
CGContextEndTransparencyLayer

●グラフィックスコンテキストへの画像の描画


CGContextDrawTiledImage
CGContextDrawImage

●グラフィックスコンテキストへのPDFコンテンツの描画


CGContextDrawPDFPage

●グラデーションの描画


CGContextDrawLinearGradient
CGContextDrawRadialGradient

●シェーディングの描画


CGContextDrawShading

●ページベースのグラフィックスコンテキストの設定


CGContextBeginPage
CGContextEndPage

●グリフの描画


CGContextShowGlyphs
CGContextShowGlyphsAtPoint
CGContextShowGlyphsWithAdvances
CGContextShowGlyphsAtPositions

●テキストの描画


CGContextGetTextMatrix
CGContextGetTextPosition
CGContextSelectFont
CGContextSetCharacterSpacing
CGContextSetFont
CGContextSetFontSize
CGContextSetTextDrawingMode
CGContextSetTextMatrix
CGContextSetTextPosition
CGContextShowText
CGContextShowTextAtPoint

●デバイス空間とユーザ空間との間の変換


CGContextGetUserSpaceToDeviceSpaceTransform
CGContextConvertPointToDeviceSpace
CGContextConvertPointToUserSpace
CGContextConvertSizeToDeviceSpace
CGContextConvertSizeToUserSpace
CGContextConvertRectToDeviceSpace
CGContextConvertRectToUserSpace



●関数

CGContextAddEllipseInRect

void CGContextAddEllipseInRect (
    CGContextRef context,
    CGRect rect
);

指定した矩形に内接する楕円を追加します。

楕円はベジェ曲線の連続によって近似されます。

その中心はrect変数によって定義された矩形の中点です。

矩形が正方形の場合、楕円は矩形の幅(または高さ)の半分と等しい半径の円となります。

rect変数が長方形の形状を指定した場合は、楕円の長軸と短軸は長方形の幅と高さによって定義されます。

楕円はパスの完全なサブパスで形成されています。

正確に言うと、楕円の描画は移動操作から始まり、全ての移動方向は右回りで、サブパスを閉じる操作で終了します。

context:グラフィックスコンテキストを指定します。

rect:楕円が内接する領域を定義する矩形を指定します。


CGContextAddLineToPoint

void CGContextAddLineToPoint (
    CGContextRef c,
    CGFloat x,
    CGFloat y
);

現在のポイントから指定したポイントまでの直線を追加します。

線分を追加した後で、現在のポイントは線分の終点に設定されます。

c:現在のパスが空ではないグラフィックスコンテキストを指定します。

x:ユーザ空間内での線分の終点となるx値を指定します。

y:ユーザ空間内での線分の終点となるy値を指定します。


CGContextAddPath

void CGContextAddPath (
    CGContextRef context,
    CGPathRef path
);

グラフィックスコンテキスト内の現在のパスに事前に作成したQuartzのパスオブジェクトを追加します。

元のパスが空でない場合、パス要素は現在のパスの上に順番に追加されます。

Quartzはパスへ追加する前に、現在の変換行列(CTM)が適用されます。

呼び出しが完了した後、始点とパスの現在のポイントは、パスの最期のサブパスのものとなります。

context:グラフィックスコンテキストを指定します。

path:事前に生成したQuartzのパスオブジェクトを指定します。(CGPathを参照)


CGContextAddRect

void CGContextAddRect (
    CGContextRef c,
    CGRect rect
);

現在のパスに矩形のパスを追加します。

これは以下のような一連の工程で、パスへ矩形を追加する簡易関数です。

// start at origin
CGContextMoveToPoint (c, CGRectGetMinX(rect), CGRectGetMinY(rect));

// add bottom edge

CGContextAddLineToPoint (c, CGRectGetMaxX(rect), CGRectGetMinY(rect));

// add right edge

CGContextAddLineToPoint (c, CGRectGetMaxX(rect), CGRectGetMaxY(rect);

// add top edge
CGContextAddLineToPoint (c, CGRectGetMinX(rect), CGRectGetMaxY(rect));

// add left edge and close

CGContextClosePath (c);

c:グラフィックスコンテキストを指定します。

rect:ユーザ空間座標内での矩形を指定します。


CGContextClearRect


void CGContextClearRect (
    CGContextRef c,
    CGRect rect
);

透明な矩形で塗りつぶします。

指定されたコンテキストがウィンドウまたはビットマップコンテキストの場合、Quartzは効果的に矩形をクリアします。

他のコンテキスト型の場合、Quartzはデバイスに依存した方法で矩形を塗りつぶします。

ただし、他のウィンドウまたはビットマップコンテキストでこの関数を使用しないでください。

c:矩形を塗りつぶすグラフィックスコンテキストを指定します。

rect:ユーザ空間座標の矩形を指定します。


CGContextConcatCTM

void CGContextConcatCTM (
    CGContextRef c,
    CGAffineTransform transform
);

コンテキスト内のユーザ座標系を、指定した行列を使用して変換します。

関数CGContextConcatCTMを呼び出すと、2つの行列を乗算によって連結(つまり結合)します。

行列を連結する順序は、演算が可換ではないため重要です。

CGContextConcatCTMを呼び出すと、コンテキスト内のCTMの結果は次のようになります。

CTMnew = transform * CTMcontext

c:グラフィックスコンテキストを指定します。

transform:指定されたコンテキストの現在の変換行列に適用する変換行列を指定します。


CGContextDrawImage

void CGContextDrawImage (
    CGContextRef c,
    CGRect rect,
    CGImageRef image
);

グラフィックスコンテキストに画像を描画します。

Quartzは、画像が不均衡であれば必要に応じてrectパラメータで指定された境界に適合するように伸縮します。

c:画像を描画するグラフィックスコンテキストを指定します。

rect:画像を描画するための境界ボックスのユーザ空間での位置と大きさを指定します。

image:描画する画像を指定します。


CGContextDrawPath

void CGContextDrawPath (
    CGContextRef c,
    CGPathDrawingMode mode
);

指定された描画モードを使用して、現在のパスを描画します。

c:描画するパスを含むグラフィックスコンテキストを指定します。

mode:パスの描画モード定数(kCGPathFillkCGPathEOFillkCGPathStrokekCGPathFillStrokekCGPathEOFillStroke)を指定します。
定数の詳細については『CGPath』を参照してください。


CGContextMoveToPoint

void CGContextMoveToPoint (
    CGContextRef c,
    CGFloat x,
    CGFloat y
);

指定したポイントから新しいサブパスを開始します。

現在のポイントはこの開始地点に設定されます。

c:グラフィックスコンテキストを指定します。

x:ユーザ空間座標内でのポイントのx値を指定します。

y:ユーザ空間座標内でのポイントのy値を指定します。


CGContextRelease

void CGContextRelease (
    CGContextRef c
);

グラフィックスコンテキストの保持カウントを減らします。

この関数はCFReleaseと同等で、cがNULLの場合以外ではエラーは発生しません。

c:解放するグラフィックスコンテキストを指定します。


CGContextScaleCTM

void CGContextScaleCTM (
    CGContextRef c,
    CGFloat sx,
    CGFloat sy
);

コンテキスト内のユーザ座標系のスケールを変更します。

c:グラフィックスコンテキストを指定します。

sx:指定されたコンテキストの座標空間のx軸をスケールする係数を指定します。

sy:指定されたコンテキストの座標空間のy軸をスケールする係数を指定します。


CGContextSetFillColorWithColor

void CGContextSetFillColorWithColor (
    CGContextRef c,
    CGColorRef color
);

Quartzのカラーを使用して、グラフィックスコンテキスト内の現在の塗りつぶし色を設定します。

c:塗りつぶし色を設定するグラフィックスコンテキストを指定します。

color:新しい塗りつぶし色を指定します。


CGContextSetGrayFillColor

void CGContextSetGrayFillColor (
    CGContextRef c,
    CGFloat gray,
    CGFloat alpha
);

DeviceGray色空間内の値に現在の塗りつぶし色を設定します。

この関数を呼び出すと2つのことが起こります。

・QuartzはDeviceGrayに現在の塗りつぶし色空間を設定します。
・Quartzはグレーとアルファパラメータで指定した値に現在の塗りつぶし色を設定します。

c:現在の塗りつぶし色を設定するグラフィックスコンテキストを指定します。

gray:希望するグレーレベルを指定する値を指定します。
DeviceGray色空間は0.0(完全な黒)から1.0(完全な白)までの範囲の値の指定を許可します。

alpha:不透明度レベルの値を指定します。
値は0.0(透明)から1.0(不透明)までの範囲で指定できます。
範囲外の値は0.0または1.0にクリッピングされます。


CGContextSetLineWidth

void CGContextSetLineWidth (
    CGContextRef c,
    CGFloat width
);

グラフィックスコンテキストの線幅を設定します。

デフォルトの線幅は1単位です。

ストロークする時、線は幅が半分ずつになるようにパスを跨いでいます。

c:変更するグラフィックスコンテキストを指定します。

width:ユーザ空間の単位で使用する新規の線幅を指定します。
値は0より大きい必要があります。


CGContextSetStrokeColorWithColor

void CGContextSetStrokeColorWithColor (
    CGContextRef c,
    CGColorRef color
);

Quartzのカラーを使用して、コンテキスト内の現在のストローク色を設定します。

c:変更するグラフィックスコンテキストを指定します。

color:新しいストローク色を指定します。


CGContextStrokePath

void CGContextStrokePath (
    CGContextRef c
);

現在のパスの沿った線を描画します。

Quartzはパスを描画するために、グラフィックス状態の線幅とストローク色を使用します。

この関数を呼び出したときの副作用として、Quartzは現在のパスをクリアします。

c:グラフィックスコンテキストを指定します。


CGContextTranslateCTM

void CGContextTranslateCTM (
    CGContextRef c,
    CGFloat tx,
    CGFloat ty
);

コンテキスト内のユーザ座標系の原点を変更します。

c:グラフィックスコンテキストを指定します。

tx:指定されたコンテキスト内のユーザ空間のユニットで、座標空間のx軸の変位量を指定します。

ty:指定されたコンテキスト内のユーザ空間のユニットで、座標空間のy軸の変位量を指定します。



●データ型

CGContextRef

typedef struct CGContext * CGContextRef;

Quartz 2Dの描画環境を表す不透過型です。



●定数



参考文献

CGContext Reference

猫にはわからないプログラミング/不透過型(opaque data type)






Bose SoundSport wireless headphones
Calendar
05 | 2011/06 | 07
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
Recent Articles
iTunes


Swift
Categories
Tips
WACOM


Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
BOSE

Bose SoundSport wireless headphones
ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
SQLite
OpenGL ES
Amazon


Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Profile

Author:水月杏香
永遠の初心者プログラマ。

QR Code
QR
Visitors