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)






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
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 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

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

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
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
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR