内容の保証はできません。


/System/Library/Frameworks/UIKit.framework

クラス UIBezierPath

NSObject
  |
  +--UIBezierPath

概要

UIBezierPathクラスは、直線や曲線で構成されているパスを定義し、カスタムビュー内でそのパスをレンダリングします.はじめにパスのジオメトリを指定するのにこのクラスを使用します。パスは四角形、楕円形、円弧のような簡単な図形で定義できます。また、直線や曲線を混合させて組み込むことで複雑なポリゴンを定義することもできます.図形を定義した後、パスを現在の描画コンテキストにレンダリングするために、このクラスの追加メソッドを利用できます.

UIBezierPathオブジェクトは、レンダリング時にパスを記述する属性とパスのジオメトリを組み合わせます.あなたはジオメトリと属性を個々に設定し、他のパスと関係なく設定を変更することができます.あなたの好みに設定されたオブジェクトがあるなら、それをパスに与えることができます.現在のコンテキスト内に自身を描画するために、あなたが望む方法で設定されたオブジェクトを持たせることもできます.作成プロセス・構成プロセス・レンダリングプロセスは全て個別の手順であるため、ベジェパスオブジェクトはあなたのコードの中で簡単に再利用可能です。あなたは、同じ図形を複数回レンダリングするのに同じオブジェクトを使用できます。これはおそらく、連続描画呼び出しの間にレンダリングオプションを変更することで実装します。

あなたはパスの現在の座標を操作することによって、パスのジオメトリを設定します。新しく空のパスオブジェクトを生成する時、現在の座標は定義されていないため、これを明示的に設定する必要があります。現在の座標をセグメントの描画なしで移動させるためには、moveToPoint:メソッドを使用します。その他の全てのメソッドでは、結果的に直線や曲線のいずれかのセグメントをパスに追加します。新しいセグメントを追加するためのメソッドは常に現在の座標で開始され、あなたが指定したいくつかの新しい座標で終了すると仮定されています。セグメントを追加した後、新しいセグメントの終了ポイントは自動的に現在のポイントになります。

単一のベジエパスオブジェクトは任意の数のオープンまたはクローズサブパスを含むことができ、各サブパスはパスセグメントの接続シリーズを現します。closePathメソッドを呼び出すことで、サブパス内で現在の座標から開始座標に追加している直線のセグメントによるサブパスを閉じます。moveToPoint:メソッドを呼び出すことで、現在のサブパスを(閉じないで)終了し、次のサブパスの開始座標を設定します。ベジエパスオブジェクトのサブパスは、同じ描画属性を共有しており、それらはグループとして操作しなければなりません。異なる属性のサブパスを描画するには、独自のUIBezierPathオブジェクトの中にそれぞれのサブパスおく必要があります。

ベジエパスのジオメトリや属性を設定した後、strokeメソッドとfillメソッドを使用して現在のグラフィックスコンテキストでパスを描画します。strokeメソッドは、現在のストロークの色とベジエパスオブジェクトの属性を使用してパスのアウトラインをトレースします。同様に、fillメソッド パスが現在使用している色で囲まれた領域内を塗りつぶします。(使用する色はUIColorクラスで設定します)

ベジェパスオブジェクトは図形の描画で使用するのに加えて、新しいクリッピング領域を定義するのにも使用することができます。addClipメソッドはグラフィックスコンテキストの現在のクリッピング領域にパスオブジェクトによって表される図形を交差させます。描画に引き続き、新しい交差領域内にあるコンテンツのみが実際にグラフィックスコンテキストにレンダリングされます。

タスク

オブジェクトの生成

+ bezierPath
+ bezierPathWithRect:
+ bezierPathWithOvalInRect:
+ bezierPathWithRoundedRect:cornerRadius:
+ bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:
+ bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:
+ bezierPathWithCGPath:

パスの構築

– moveToPoint:
– addLineToPoint:
– addCurveToPoint:controlPoint1:controlPoint2:
– addQuadCurveToPoint:controlPoint:
– closePath
– removeAllPoints
– appendPath:
CGPath property
currentPoint property

描画プロパティへのアクセス

lineWidth property
lineCapStyle property
lineJoinStyle property
miterLimit property
flatness property
usesEvenOddFillRule property
– setLineDash:count:phase:
– getLineDash:count:phase:

パスの描画

– fill
– fillWithBlendMode:alpha:
– stroke
– strokeWithBlendMode:alpha:

パスの切り取り

– addClip

接触の検出

– containsPoint:
empty property
bounds property

変換の適用

– applyTransform:

プロパティ

bounds

パスの境界矩形を返す. (読み取り専用)

@property(nonatomic, readonly) CGRect bounds

補足
このプロパティの値は、いくつかの二次曲線とベジェの制御座標を含むパス内の、全ての座標で完全に囲まれた最小矩形を表しています.

CGPath

パスを表すコアグラフィックスを返す.

@property(nonatomic) CGPathRef CGPath

補足
このプロパティはパスのスナップショットを含んでいます.コアグラフィックスファンクションに利用できる不変のパスオブジェクト返します.このパスオブジェクトはUIBezierPathオブジェクトに所有されており、パスにさらに変更を加えるまでに限り有効です.

コアグラフィックスフレームワークのファンクションを使用して構築したパスに対して、このプロパティの値を設定できます.新しいパスを設定時、このメソッドは提供するパスのコピーを作成します.

currentPoint

グラフィックス内の現在のポイントを返す.(読み取り専用)

@property(nonatomic, readonly) CGPoint currentPoint

補足
このプロパティの値は曲線のセグメントの開始点を表しています.パスが空の場合は、プロパティの値はCGPointZeroになります.

empty

パスが任意の有効な要素を持っているかどうかを返す.(読み取り専用)

@property(readonly, getter=isEmpty) BOOL empty

補足
有効なパスは、指定された座標に移動するためのコマンドや描画する直線や曲線のセグメント、または閉じるパスを含んでいます.したがって、たとえあなたがmoveToPoint:メソッドを呼び出したとしてもパスが空であることは考慮されません.

flatness

曲線のパスセグメントの描画制度を決定する要因を返す.

@property(nonatomic) CGFloat flatness

補足
このプロパティの値は描画された曲線と実際の曲線との最大許容距離(ピクセル単位)を測ります.値が小さいほどより滑らかな曲線になりますが、その分より多くの処理時間が必要になります.値が大きいほどギザギザな曲線になりますが、その分、高速に描画することができます.この値はデフォルトでは6.0になっています.

ほとんどの場合、この値を変更するべきではありません.ただし、図形の描画に時間がかかる時(例えばスクロール時)には、処理にかかる時間を最小限にするために、一時的にこの値を増やすことがあります.

lineCapStyle

ストローク時のパスの終点の図形を返す.

@property(nonatomic) CGLineCap lineCapStyle

補足
このプロパティはいくつかの開いているサブパスの開始点と終点に適用されます.デフォルトのスタイルはkCGLineCapButtになっています.

lineJoinStyle

ストロークされたパスのセグメントと連結している接合部の図形を返す.

@property(nonatomic) CGLineJoin lineJoinStyle

補足
デフォルトのスタイルはkCGLineJoinMiterになっています.

lineWidth

パスの線の幅を返す.

@property(nonatomic) CGFloat lineWidth

補足
このプロパティの値はレシーバのストロークパスの厚さを定義しています.値が0の時は、個々のデバイス上で描画することのできる薄い線として解釈されます.実際に描画された線の幅は、指定された幅から2デバイスピクセルほど異なる可能性があります.また、現在のアンチエイリアス設定とピクセルグリッドに関して、線の位置が異なる可能性もあります.さらに、アクティブなグラフィックスコンテキストでスケーリングの影響を受ける可能性もあります.

miterLimit

接続されたラインセグメントの接合部が突き出るのを防ぐのを助けるための限界値を返す.

@property(nonatomic) CGFloat miterLimit

usesEvenOddFillRule

描画パスの使用する時の偶奇屈曲規則を返す.

@property(nonatomic) BOOL usesEvenOddFillRule

クラスメソッド

bezierPath

新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPath

bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:

指定した円弧で初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center adius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise

bezierPathWithCGPath:

コアグラフィックスパスのコンテンツで初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithCGPath:(CGPathRef)CGPath

bezierPathWithOvalInRect:

指定した矩形に内接する楕円形で初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect

bezierPathWithRect:

矩形パスで初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect

bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:

丸みを帯びた矩形パスで初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii

bezierPathWithRoundedRect:cornerRadius:

丸みを帯びた矩形パスで初期化した新しいUIBezierPathオブジェクトを作成して返す.

+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius

インスタンスメソッド

addClip

現在のグラフィックスコンテキストのクリッピングパスとレシーバのパスに囲まれた領域を交差させ、結果として現在のクリッピングパスの図形を作成する.

- (void)addClip

addCurveToPoint:controlPoint1:controlPoint2:

レシーバのパスに三次のベジェ曲線を追加する.

uibezier_curve.jpg

- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2

addLineToPoint:

レシーバのパスに直線を追加する.

- (void)addLineToPoint:(CGPoint)point

addQuadCurveToPoint:controlPoint:

レシーバのパスに二次のベジェ曲線を追加する.

quadratic_bezier_curve.jpg

- addQuadCurveToPoint:controlPoint:

appendPath:

レシーバのパスに指定されたパスオブジェクトのコンテンツを追加する.

- (void)appendPath:(UIBezierPath *)bezierPath

applyTransform:

指定したアフィン変換行列を使用してパス内の全ての座標を変換する.

- (void)applyTransform:(CGAffineTransform)transform

closePath

最近追加されたサブパスを閉じる.

- (void)closePath

containsPoint:

レシーバに囲まれている領域が指定された座標を含んでいるかどうかを返す.

- (BOOL)containsPoint:(CGPoint)point

fill

現在の描画プロパティを使用してレシーバのパスに囲まれた領域を塗りつぶす.

- (void)fill

fillWithBlendMode:alpha:

指定されたブレンドモードと透明度の値を使用してレシーバのパスに囲まれた領域を塗りつぶす.

- (void)fillWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha

getLineDash:count:phase:

パスのラインストロークパターンを取得する.

- (void)getLineDash:(CGFloat *)pattern count:(NSInteger *)count phase:(CGFloat *)phase

moveToPoint:

レシーバの現在座標を指定した位置に移動させる.

- (void)moveToPoint:(CGPoint)point

removeAllPoints

レシーバから全ての座標を削除し、実質的に全てのサブパスを削除する.

- (void)removeAllPoints

setLineDash:count:phase:

パスのラインストロークパターンを設定する.

- (void)setLineDash:(const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase

stroke

現在の描画プロパティを使用してレシーバのパスに沿ってラインを描画する.

- (void)stroke

strokeWithBlendMode:alpha:

指定したブレンドモードと透明度の値を使用してレシーバのパスに沿ってラインを描画する.

- (void)strokeWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha

コンスタント

UIRectCorner

矩形の角を示す.

定数名概要
UIRectCornerTopLeft矩形の左上の角を示す
UIRectCornerTopRight矩形の右上の角を示す
UIRectCornerBottomLeft矩形の左下の角を示す
UIRectCornerBottomRight矩形の左下の角を示す
UIRectCornerAllCorners矩形の全ての角を示す

補足
この定数は、標準の座標系(原点が左上隅にあり右下に行くほど値が増える)で描画された、アフィン変換によって変更されていない矩形の隅に反映される.


添付ファイル: filequadratic_bezier_curve.jpg 1302件 [詳細] fileuibezier_curve.jpg 1231件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-09 (木) 10:03:01 (2295d)