.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.24 2009

Quartz で影を描く

Tasaki です。

前回、Quartz で角丸矩形のパスを生成して描画する関数を
紹介しましたので、今回はこれに影を付ける場合を考えてみましょう。

Quartz には、図形や文字などの影を描画する機能が備わっており、
影の設定を付け加えるだけで、簡単に描画できるようになっています。

そのための関数がこれです。
void CGContextSetShadow( CGContextRef context, CGSize offset, CGFloat blur )

まず、引数についてですが、
context は描画対象のグラフィックコンテキスト、
offset は、影のオフセット値、これは光源の座標と考えればいいでしょうか、
blur は影のブラーの強さを表しています。

要は、offset の値によって、影の付く方向や長さが変わり、
blur の値によって、境界付近のぼかし具合が変わるといった仕組みです。

これを影を付けたい物体の描画前に設定しておくと、
物体の描画にともない影が表示されることになります。

ただし、影ありと影なしの物体を
同時に描画する場合には注意点があり、
影の設定前にグラフィックステートの退避を、
描画終了後にグラフィックステートの復元を行う必要があります。

グラフィックステートの退避には、
void CGContextSaveGState( CGContextRef c ) を、
復元には、void CGContextRestoreGState( CGContextRef c )
それぞれ呼び出します。

グラフィックステートは、影、フォント、色、線の幅などの
コンテキストが描画に使用するための情報の集まりで、
この場合は、影を付けない状態を事前に保存しておいて、
後でその状態に戻すことになります。

これを踏まえて、コードの流れはこのようになります。
①グラフィックステートの保存
②影を設定
③描画
④グラフィックステートの復元

ちなみに、色付きの影を表示したい場合には、この関数を使います。
void CGContextSetShadowWithColor( CGContextRef context, CGSize offset, CGFloat blur, CGColorRef color )
関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/21-1ceed09b

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。