我可以使用哪种数学算法来计算移动鼠标的路径?我只是想拥有这种类型的功能:
animateMouseDiag(int X, int Y){
//Move mouse 1 step towards goal, for loop most likely, from the current Mouse.Position
Thread.Sleep(1);
}
例如,如果我给它 animateMouseDiag(100,300),它会将鼠标向右移动 100 并向下移动 300,但在对角线上,而不是在“L”中向右然后向下移动。类似地,如果我给它 (-50,-200),它将沿着对角线路径将它移动到那些相对坐标(左 50 和上 200)。
谢谢!(顺便说一句,这是一个 alt 帐户,因为我觉得自己像个白痴一样在我的主目录上询问基本的高中数学。我只是无法将其翻译成编程。)
编辑:我想出了这个:
public static void animateCursorTo(int toX, int toY)
{
double x0 = Cursor.Position.X;
double y0 = Cursor.Position.Y;
double dx = Math.Abs(toX-x0);
double dy = Math.Abs(toY-y0);
double sx, sy, err, e2;
if (x0 < toX) sx = 1;
else sx = -1;
if (y0 < toY) sy = 1;
else sy = -1;
err = dx-dy;
for(int i=0; i < toX; i++){
//setPixel(x0,y0)
e2 = 2*err;
if (e2 > -dy) {
err = err - dy;
x0 = x0 + sx;
}
if (e2 < dx) {
err = err + dx;
y0 = y0 + sy;
}
Cursor.Position = new Point(Convert.ToInt32(x0),Convert.ToInt32(y0));
}
}
这是Bresenham 的线算法。奇怪的是,这些线条并没有在设定的角度上绘制。他们似乎被吸引到屏幕的左上角。