コース: Objective-C 基本講座

今すぐコースを受講しましょう

今すぐ登録して、23,100件以上登録されている、業界エキスパート指導のコースを受講しましょう。

独自画面の描画にベジェ曲線を使う

独自画面の描画にベジェ曲線を使う - Objective-Cのチュートリアル

コース: Objective-C 基本講座

独自画面の描画にベジェ曲線を使う

このレッスンではベジェ曲線を使って 曲線を描いたり塗りつぶしたりする方法や オフスクリーンの仕組みを紹介します UIView から派生したクラスを用意し オーバーライドした drawRect メソッド内で ベジェ曲線を使って僧侶の帽子を描いてみます ベジェ曲線は2点間を 2つの制御点に従う曲線で描画します Adobe Illustrator や PDF でも利用されている曲線です ベジェ曲線の管理には UIBezierPath という オブジェクトを使います まず UIBezierPath を作成し movetoPoint で起点を指定し その後 addCurvetoPoint で 争点と制御点を追加していきます こうやってUIBezierPath に ベジェ曲線を定義していけば 後は UIBezierPath に Fill メッセージを送れば 曲線内を塗りつぶし ストロークメッセージを送れば 輪郭線を描きます 具体的な座標でベジェ曲線を 定義してもいいのですが 今回はまず縦横 1 pt の矩形内で ベジェ曲線を定義することにしました そしてそのベジェ曲線を applyTransform メッセージで 任意の大きさに拡大します applyTransform の引数は Affin 行列を表現した― CGAffinTransform といった構造体です Affin 行列は座標変換に用いられる行列で 線形代数学を知っている人なら 自分で値を設定することもできますが 最初から拡大用・ 移動用 回転用の affin 行列を作る関数が 用意されているので そちらを使うといいでしょう CGAffinTransformMakeScale は 拡大用です 引数で縦横の倍率を指定します それでは実際に動かしてみましょう Xcode の画面に切り替えます UIView から派生しdrawRect メソッドをオーバーライドした― カスタム UIView は先に用意しておきました 名前を BishopView としています drawRect メソッド内には 先ほど説明したベジェ曲線を扱った 描画を追加しています 拡大率には bounds の width と height を指定します これで bounds 一杯の曲線になるはずです UIBezierPath の lineWidth…

目次