LoginSignup
3
4

More than 5 years have passed since last update.

paper.jsでレスポンシブな図形を描く

Posted at

Paper.jsはcanvasに図形を簡単に書けるライブラリです。

レスポンシブにする方法はググると出てくるんですが、図形ごとにpositionとscaleを変えるなど、どう考えても見通しが悪いものしか出てきません。(ググり方が悪いのかも)

layerにscaleをかけるだけでうまくいったのでここで紹介します。

以下はpaperscriptの中です。viewはcanvasを指定しているところで自動的にオブジェクトが入ります。

var original_size = {width: 640, height: 640};
var last_ratio = 1.0;
view.onResize = function(event) {
  var ratio = $('#can').innerWidth()/original_size.width;
  project.activeLayer.scale(ratio/last_ratio, new Point(0,0));
  last_ratio = ratio;
}

また、下はHTMLです。resizeの指定が必要です。

<div id="can">
  <canvas id="myCanvas" width="640" height="640" resize></canvas>
</div>

ポイントは、project.activeLayer.scale(ratio/last_ratio, new Point(0,0));
の部分です。第1引数は比率を、第2引数はどこを起点に拡縮するかを定義します。
scaleは破壊的操作なので、リサイズ中常にratio/last_ratio 倍することで前フレームの影響を打ち消せます。
また、第2引数を指定しないとデフォルトが中心となり上手くいかないため、左上を基準にします。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4