2011-12-27 17 views
0

HTML5キャンバス要素にSVGイメージを含めるにはどうすればよいのですか?ブラウザウィンドウのサイズを変更するとSVGのサイズも調整されますか?HTML5キャンバス要素内のSVG

+0

* "ブラウザのサイズを変更するとSVGのサイズも調整できるように" *:キャンバスは**サイズ変更しないことを知っていますか?ウィンドウは自動的に表示されますか? –

+0

あります。それでこれは不可能ですか? – shub

+0

私はまだSVGで作業していません。私は、キャンバスにSVGイメージを追加することができたとしても、この唯一のアクションはサイズ変更の問題を解決できないと言っています。キャンバスのサイズ変更はJavaScriptで行います。たぶん同じテクニックを使用してSVGイメージのサイズを変更することができます。 –

答えて

4

これは、私がちょうど正しい方向にあなたを指摘するつもりであることを実証するためにかなり定型コードを必要とします。

myCanvasという名前のキャンバスオブジェクト/要素にアクセスできるとします。 var ctx = myCanvas.getContext('2d')を実行すると、ctxCanvasRenderingContext2Dのインスタンスになります。

  • dxdyは、左上隅からのオフセットである:あなたがあなたのイメージimgを描画するとき今、あなたはctx.drawImage(img, dx, dy, sw, sh)を実行します。
  • swおよびshは画像の絶対サイズです。

したがって、画像サイズをswshに調整します。 myCanvas.heightmyCanvas.widthでアクセスできるキャンバスのサイズに依存するようにします。

キャンバスの幅/高さをウィンドウのサイズに応じて設定します。ウィンドウサイズはwindow.innerWidthwindow.innerHeightでアクセスします。サイズを変更すると、window.addEventListener('resize', function (evt) { /* handle resize here */ });のようにこのイベントを聞くことができます。例:

var updateCanvasSize, canvasRelativeSize; 

canvasRelativeSize = .5; 

updateCanvasSize = function (evt) { 
    myCanvas.width = canvasRelativeSize * window.innerWidth; 
    myCanvas.height = canvasRelativeSize * window.innerHeight; 
    draw(); // redraws the canvas since size has changed 
}; 
関連する問題