2017-12-30 42 views
1

私はこのdivを拡張するボタンをクリックしてdivを追加すると、p5.jsサイズでキャンバスを作成しようとしています。私はキャンバスをリロードする必要はありません、代わりにいくつかの追加の高さを追加する必要があります。それを行う方法はありますか?私はキャンバス幅を100%と高さ:autoにしようとしましたが、動作しません。p5.js:divの高さを変更するときのキャンバスの高さのサイズ変更

<div class="canvas-wrapper"> 
    <div id="canvas"></div> 
</div> 

<button type="button" class="button" id="extend-canvas">Extend</button> 

スクリプト:

function setup() { 
    var myCanvas = createCanvas(498, 598); 
    myCanvas.parent('canvas'); 
} 

$("#extend-canvas").click(function() { 
    var canvasHeight = $(".canvas-wrapper").height(); 
    $(".canvas-wrapper").height(canvasHeight + 300); 
}); 

CSS:

.canvas-wrapper { 
    margin: 0 auto; 
    background: #fff; 
    width: 500px; 
    height: 600px; 
    position: relative; 
} 

#canvas canvas { 
    width: 100% !important; 
    height: auto !important; 
} 
+0

https://github.com/processing/p5.js/issues/207 c.size(width-10、height-10)を使用してサイズ変更します。 (サイズメソッドを使用するには、p5.dom.jsアドオンをロードする必要があります) – GhitaB

+0

これは動作しますが、キャンバスがリロードされて空白になり、追加したすべての情報(私のマウスで線を引いたもの)が消えます。 – Kaori

+0

https://p5js.org/reference/#/p5/resizeCanvas – GhitaB

答えて

1

あなたはこのためにresizeCanvas()機能を使用することができ、以下のコードを参照してください。詳細はthe referenceにあります。ここで

は、画面の幅と高さに一致するようにキャンバスのサイズを変更例を示します

function setup() { 
    createCanvas(windowWidth, windowHeight); 
} 

function draw() { 
    background(0, 100, 200); 
} 

function windowResized() { 
    resizeCanvas(windowWidth, windowHeight); 
} 

しかし、あなたは同じように簡単にdiv要素の幅と高さを取得し、それにキャンバスサイズを設定することができます。

+1

@ Kaoriこれを回避する方法の1つは、バッファにすべてを描画することです( 'createGraphics()'関数はあなたの友人です)、キャンバスのサイズを変更してから描画しますバッファはキャンバスに戻ります。 –

+0

これは動作しますが、キャンバスが再読み込みされて空白になり、追加したすべての情報(私はマウスでいくつかの線を描いています)が消えます。 – Kaori

+0

ありがとう!私はそれを試みます。 :) – Kaori

関連する問題