Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
96
rated 0 times [  98] [ 2]  / answers: 1 / hits: 44367  / 12 Years ago, wed, july 4, 2012, 12:00:00
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=UTF-8>
<title>Insert title here</title>
<script language=javascript>
function main(){
var canvas = document.getElementById(canvas);
canvas.addEventListener(mousemove, function(e){
if (!e) e = window.event;
var ctx = canvas.getContext(2d);

var x = e.offsetX;
var y = e.offsetY;

ctx.fillRect(x, y, 1, 1);
});
}
</script>
</head>
<body onload=main();>
<div style=width: 800px; height: 600px; -webkit-transform: scale(0.75,0.75); -moz-transform: scale(0.75,0.75)>
<canvas id=canvas width=400px height=400px style=background-color: #cccccc;></canvas>
</div>
</body>
</html>


Please consider the above quick and dirty example.
Please notice that my canvas is contained by a div having a scale transform applied.
The above code works perfectly on any webkit based browser. While moving the mouse it draws points on the canvas.
Unfortunately it doesn't in Firefox as its event model does not support the offsetX / Y properties.
How can I transform mouse coordinates from (perhaps) event.clientX (which is supported in firefox too) into canvas relative coordinates taking into account canvas position, transform etc?
Thanks, Luca.


More From » html

 Answers
5

Try layerX, layerY



var x = (e.offsetX === undefined) ? e.layerX : e.offsetX;
var y = (e.offsetY === undefined) ? e.layerY : e.offsetY;


FIDDLE


[#84466] Tuesday, July 3, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
brodyfrancisi

Total Points: 1
Total Questions: 102
Total Answers: 89

Location: Marshall Islands
Member since Mon, May 31, 2021
3 Years ago
brodyfrancisi questions
;