私はキャンバスの幅と高さ全体を占める背景イメージを持ち、イメージ上の別の場所を参照できるようにしたいので、画像内のそれらの点で円を描くので、私は視覚的に正しい場所を確認することができます。私は私のマウスクリックのリスナーイベントに次のコードで、私はドットを描きたい場所でマウスをクリックすることでこれをやっているJavascript - 幅と高さのパーセンテージを使用してキャンバスに描画する
:
var rectCanvas = canvas.getBoundingClientRect();
var positionX = Math.round(((e.clientX - rectCanvas.left)/canvas.width * 100) * 1000)/1000;
var positionY = Math.round(((e.clientY - rectCanvas.top)/canvas.height * 100) * 1000)/1000;
//alert(positionX + ", " + positionY);
alert("Width\nPosition: " + (e.clientX - rectCanvas.left) + "\nPercentage Position: " + positionX + "\nBack to position: " + percentToPxHor(positionX));
は、私は次のルーチンは、宣言している:
function percentToPxHor(intPx) {
return intPx * canvas.width/100;
}
function percentToPxVert(intPx) {
return intPx * canvas.height/100;
}
背景画像の注目すべき機能をクリックすると、わかりやすい値が得られます。
幅が
ポジション:532.5
割合ポジション:53.091戻る
位置へ:532.50273
このことから、私ははっきりと伝えることができます例えば、画像全体で約半分をクリックすると、と私を促し幅のパーセンテージをピクセル値に変換するための私のルーチンが機能します。しかし、これを実践しようとするとうまくいかない。
前述の円を描画しようとすると、それらはY軸上に正しく配置されますが、X軸上では右にずれてしまいます。私はこれがウィンドウとの関係でキャンバスの位置を考慮する方法と関係があると考えていますが、私はそれに私の指を置くことはできません。画像の左側に配置された円はやや右端にあり、画像の右端に配置された円は非常に遠すぎます(問題が何であっても、大きな関与の数字、私はこれらの円を追加すると
、私は次のコードスニペットを使用して、四角形の各コーナーに4、1を配置します。
var topLeft = {x:percentToPxHor(17.275),y:percentToPxVert(59.691)};
var bottomLeft = {x:percentToPxHor(17.275),y:percentToPxVert(60.72)};
var topRight = {x:percentToPxHor(71.459),y:percentToPxVert(61.407)};
var bottomRight = {x:percentToPxHor(71.352),y:percentToPxVert(62.436)};
は、任意の助けいただければ幸いです
。