【发布时间】:2019-07-21 08:55:26
【问题描述】:
我知道这个问题已经被问过好几次了,但我找到的答案都没有对我有用。我需要允许用户缩放到目前为止有效的图像,这只是一个scale(factor) 调用,但现在我想通过鼠标指针进行缩放。这证明更困难,因为我可以在指针效果上创建放大,但是当鼠标移动时,图像也会移动。从这个演示中可以看出:
https://editor.p5js.org/J-Cake/sketches/1r1wmWO60
我想我会将第二个平移的坐标乘以比例因子,但这似乎也无济于事。我错过了什么?
let sf = 1; // scaleFactor
let x = 0; // pan X
let y = 0; // pan Y
let mx, my; // mouse coords;
function setup() {
createCanvas(400, 400);
}
function draw() {
mx = mouseX;
my = mouseY;
background(255);
translate(mx, my);
scale(sf);
translate(-mx, -my);
translate();
rect(100, 100, 100, 100);
if (mouseIsPressed) {
x -= pmouseX - mouseX;
y -= pmouseY - mouseY;
}
}
window.addEventListener("wheel", function(e) {
if (e.deltaY > 0)
sf *= 1.05;
else
sf *= 0.95;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.js"></script>
【问题讨论】:
-
@Rabbid76 我提供的示例允许您缩放图像,如果在缩放时移动鼠标,则整个物体都会移动。
-
轮子变化导致秤更新。 p5 负责更新。
标签: javascript canvas processing p5.js