HTML5キャンバスにマウスのクリックとドラッグを使用して矩形を描画すると、幅と高さについてそれぞれどのようにフィードバックを得ることができますか?描かれる時間。JavaScriptでマウスで描かれた矩形の幅と高さを取得する方法
0
A
答えて
0
次のコードを変更して、x座標とy座標を取得し、幅と高さを計算してみます。
https://jsfiddle.net/w3tian/Lbz3ayyd/
<body>
<h2 onclick="showCoords(event)">
=============================<br>
potential area that contains the rectangle
=============================<br>
</h2>
<p><strong>Hint:</strong> Try to click different places in the heading.
</p>
<p id="demo"></p>
<script>
function showCoords(event) {
var x = event.clientX;
var y = event.clientY;
var coords = "X coords: " + x + ", Y coords: " + y;
document.getElementById("demo").innerHTML = coords;
}
</script>
</body>
0
私はそうは思わ:このデモを試してみてくださいマウスで長方形の開始位置とサイズを計算すると、
var width = endX - startX;
var height = endY - startY;
を座標:
var Paper = can.Control(
{
defaults: {
rect: {
minWidth: 10,
minHeight: 10
}
}
},
{
/**
* Initialize
*/
init: function() {
// Bind event handlers
this.element.on('mousedown.paper', $.proxy(this.startDrawRect, this));
},
/**
* Start drawing a rectangle
*
* @param e
*/
startDrawRect: function(e) {
// Get canvas offset
var offset = this.element.offset();
this.canvasOffsetLeft = offset.left;
this.canvasOffsetTop = offset.top;
// Save start positions
this.drawStartX = e.pageX - this.canvasOffsetLeft;
this.drawStartY = e.pageY - this.canvasOffsetTop;
// Create the rectangle
this.drawingRect = this.createRect(this.drawStartX, this.drawStartY, 0, 0);
// Bind event handlers
this.element.on('mousemove.paper', $.proxy(this.drawRect, this));
this.element.on('mouseup.paper', $.proxy(this.endDrawRect, this));
},
/**
* Draw the rectangle
*
* @param e
*/
drawRect: function(e) {
var currentX = e.pageX - this.canvasOffsetLeft;
var currentY = e.pageY - this.canvasOffsetTop;
// Calculate the position and size of the rectangle we are drawing
var position = this.calculateRectPos(this.drawStartX, this.drawStartY, currentX, currentY);
// Set position and size
this.drawingRect.css(position);
},
/**
* Finish drawing the rectangle
*
* @param e
*/
endDrawRect: function(e) {
var currentX = e.pageX - this.canvasOffsetLeft;
var currentY = e.pageY - this.canvasOffsetTop;
// Calculate the position and size of the rectangle we are drawing
var position = this.calculateRectPos(this.drawStartX, this.drawStartY, currentX, currentY);
console.log("Width :" + position.width);
console.log("Height :" + position.height);
if (position.width < this.options.rect.minWidth || position.height < this.options.rect.minHeight) {
// The drawn rectangle is too small, remove it
this.drawingRect.remove();
}
else {
// Set position and size
this.drawingRect.css(position);
// The rectangle is big enough, select it
this.selectRect(this.drawingRect);
}
// Unbind event handlers
this.element.off('mousemove.paper');
this.element.off('mouseup.paper');
},
/**
* Create a rectangle
*
* @param x
* @param y
* @param w
* @param h
*/
createRect: function(x, y, w, h) {
return $('<div/>').addClass('rect').css({
left: x,
top: y,
width: w,
height: h
}).appendTo(this.element);
},
/**
* Select the given rectangle
*
* @param rect
*/
selectRect: function(rect) {
// Deselect the previous selected rectangle
this.selectedRect && this.selectedRect.removeClass('selected');
// Select the given rectangle
this.selectedRect = rect;
this.selectedRect.addClass('selected');
},
/**
* Calculate the start position and size of the rectangle by the mouse coordinates
*
* @param startX
* @param startY
* @param endX
* @param endY
* @returns {*}
*/
calculateRectPos: function(startX, startY, endX, endY) {
var width = endX - startX;
var height = endY - startY;
var posX = startX;
var posY = startY;
if (width < 0) {
width = Math.abs(width);
posX -= width;
}
if (height < 0) {
height = Math.abs(height);
posY -= height;
}
return {
left: posX,
top: posY,
width: width,
height: height
};
}
}
);
$(function() {
var paper = new Paper('#canvas', {});
});
#canvas {
width: 600px;
height: 400px;
border: 1px solid #ccc;
position: relative;
}
.rect {
position: absolute;
border: 2px solid rgba(199, 25, 9, 0.64);
}
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="//canjs.com/release/1.1.7/can.jquery.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id="canvas"></div>
</body>
</html>
関連する問題
- 1. 描画された矩形の高さと幅を確認する方法PYTHON
- 2. 等角矩形/正方形の高さと幅を計算する方法
- 3. マウスのクリックで矩形を描く - 表示されない
- 4. ペインに描画された矩形座標を取得する
- 5. OpenCVで矩形の高さと幅を見つける方法は?
- 6. 私のマウスとまったく同じように(マウスで)描画する矩形を作る方法は?
- 7. フォント文字の境界矩形の幅と高さを取得する方法は?
- 8. SVG.js:矩形の幅または高さをアニメートできない
- 9. Paper.jsで矩形を描く方法は?
- 10. JavaScriptでイメージ変数の高さと幅を取得する
- 11. pdfContentByteでページ幅と高さを取得する方法
- 12. 中央矩形から最も離れた矩形を取得
- 13. OCRテキストで検出された矩形を描画する方法
- 14. 角2:キャンバス上にマウスで描画する矩形。
- 15. WPVMでMVVMを使用してマウスをドラッグしたときの矩形描画
- 16. マスクされた領域の幅と高さを取得する方法
- 17. WPF矩形の幅と高さを相対ソースにバインド
- 18. jqueryでイメージの高さの幅を取得する方法
- 19. スクロールビューアでズームした領域の高さと幅を取得する方法は?
- 20. androidのWebviewの幅と高さを取得する方法
- 21. ページのビジュアルセクションの幅と高さを取得する方法は?
- 22. AndroidでImageViewのDrawableの矩形を取得する方法は?
- 23. マウスで移動する矩形のバグ
- 24. 複数のDIVを選択するためにマウスで矩形を描くことは可能ですか?
- 25. アンドロイドイメージblobの幅と高さを取得する方法は?
- 26. javascriptで高さと幅の画像を確認する方法
- 27. ファイルタグに画像の高さと幅を取得するJavaScript
- 28. 記録された矩形よりも両側に2px大きい描画矩形を作る方法。 C#
- 29. プログラムで矩形の線幅を変更する方法
- 30. fabric.jsで矩形を描く