2012-06-21 5 views
15

HTML5のtranslate-methodは、図面の原点を元の原点に相対的に移動させるため、 (私がctx.translate(20,20)を2回連続して使用すると、ctx.translate(40,40)を使用したときと同じ結果になります) これで問題は描画の起点をリセットしたいのです元の位置(最初にtranslate()を使用する前の位置)に戻すには、どうしたらいいですか?HTML5翻訳方法、デフォルトにリセットする方法

答えて

35
ctx.setTransform(1, 0, 0, 1, 0, 0); 

MDN setTransform documentation

+0

まさに私が探していたものです。 'ctx.setTransform(1、0、0、1、0.5、0.5);'変換をリセットする心配はありません。 – Nolonar

+1

これは動作しますが、@ Loktarの回答は最良のものとして受け入れられるべきです:http://stackoverflow.com/a/11144306/1866876 – viarnes

+1

翻訳の単一バッチをデフォルトの(変換されていない)スペースに元に戻すだけであれば、 save/restoreは変換だけでなくすべてのコンテキストプロパティで機能するので、 'setTransform(1,0,0,1,0,0)'は 'save&restore'よりも優れています。 – markE

46

あなたは.save().restore()

ctx.save(); 
ctx.translate(// do some translations); 
// draw whatever 
ctx.restore(); 

を使用しますが、現在のコンテキストの状態を「保存」するsave()を呼び出す必要があることを行うことができます。その後、翻訳、回転などを実行することができます。restore()の呼び出しが完了した後、最初にsave()と呼んだときのコンテキストの状態にリセットされます。

Live Demo

MDN Tutorial also explaining it

+1

ありがとうございました:) – Wingblade

+1

これは、変換を積み重ねることができるため、これが最適なソリューションです。 – sdgfsdh

2
ctx.resetTransform(); 

詳細はMDN documentationを参照してください。ブラウザの互換性は非常に低いです。

+0

ええ、ちょうどこれも、かなりクールに出くわしました。 +1 – Loktar

関連する問題