SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CurlデベロッパーセンターPick Up(AD)

CurlとHTML5のcanvasを比較する
2次元グラフィックスの応用例

  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (11.0 KB)

 以下、横方向、斜め方向のグラデーションです。縦方向との違いは線形方向の指定部分のみです。

Curl実装

(Sample¥002.dcurl)
(Sample¥002.dcurl)
(Sample¥003.dcurl)
(Sample¥003.dcurl)

Canvas実装

(Sample¥002.html)
(Sample¥002.html)
(Sample¥003.html)
(Sample¥003.html)

イメージのクリッピング

 次にイメージのクリッピングについても簡単に解説します。どちらも以下のような三角形のクリッピングが可能です。Curlとcanvas両者でアプローチは異なっており、Curlでは、Renderer2d.render-triangleメソッドで三角形を描画する際に、塗りつぶしパターンとしてグラデーションを指定しているのに対し、canvasでは三角形のクリッピング領域を設定して、矩形のグラデーションを描画しています。

 また、CurlではFrameなどの描画オブジェクトのdrawメソッドをオーバーライドし、引数で渡されるRenderer2dを用いて描画を行います。

Curl実装

(Sample¥004.dcurl)
(Sample¥004.dcurl)

Canvas実装

(Sample¥004.html)
(Sample¥004.html)
Curlでの2次元描画処理
{define-proc {tri-proc ren:Renderer2d}:void
    let fp:FillPattern = {LinearGradientFillPattern
                             {Fraction2d 0, 0},
                             {Fraction2d 1, 0},
                             {Spectrum.from-envelope
                                 "#C05050", 0.0,
                                 "#C0C050", 0.5,
                                 "#5050C0", 1.0
                             }
                         }
    {ren.render-triangle
        {Distance2d 1cm, 4cm},
        {Distance2d 4cm, 1cm},
        {Distance2d 0cm, 0cm},
        fill-pattern = fp
    }
}
{define-class RepaintFrame {inherits Frame}
  {constructor {default ...}
    {construct-super ...}
  }
  {method public {draw ren:Renderer2d}:void
    {tri-proc ren}
  }
}

グラデーションパターンの部分的な使用

 次は、イメージのグラデーションパターンの部分的な使用についてです。この例では、Renderer2d.render-rectangleメソッドのテクスチャ座標パラメータを指定し、元のグラデーションパターン全体を1と考えた時の0.3~0.7の領域を切り出したグラデーションを用いて描画しています。

(Sample¥005.dcurl)
(Sample¥005.dcurl)
{ren.render-rectangle
  0.5cm, 0.5cm, 2.0cm, 2.0cm,
  fill-pattern = fp,
  uv1 = {Fraction2d .3, .3},
  uv2 = {Fraction2d .7, .7}
}

 以上、グラデーションおよび2次元描画について、駆け足ではありましたが紹介しました。ここで紹介はできませんでしたが、Renderer2dにはさまざまな描画メソッドが提供されています。

閉じた図形の描画メソッド

  • Renderer2d.render-ellipse
  • Renderer2d.render-polygon
  • Renderer2d.render-polygon-from-array
  • Renderer2d.render-rectangle
  • Renderer2d.render-rounded-rectangle
  • Renderer2d.render-stippled-rectangle
  • Renderer2d.render-region
  • Renderer2d.render-triangle

線図形の描画メソッド

  • Renderer2d.render-elliptic-path
  • Renderer2d.render-path
  • Renderer2d.render-rectangular-path
  • Renderer2d.render-rounded-rectangular-path
  • Renderer2d.render-line

その他の図形の描画メソッド

  • Renderer2d.render-drawable…指定されたDrawableのすべてまたは一部をレンダリングします。
  • Renderer2d.render-pixmap…指定されたPixmapのすべてまたは一部をレンダリングします。
  • Renderer2d.render-string…指定されたStringのすべてまたは一部をレンダリングします。

次のページ
2.イメージ加工

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
CurlデベロッパーセンターPick Up連載記事一覧

もっと読む

この記事の著者

尾松 秀紀(オマツ ヒデキ)

2度目の成人式を過ぎても、なお、現役で組んでたりします。 ^__^;「ものづくり」は大好きな2児の父親です。真新しい技術には興味ありありで、暇を作っては、試してみたりしています。機会があれば、いろいろご紹介していきたいと思いますので、今後とも、よろしくお願いします。P.S. 株式会社ベーシック:関西事業所は...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5032 2010/03/31 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング