【发布时间】:2019-04-04 22:24:21
【问题描述】:
我目前正在尝试在 SharpDX 中移动 2D 纹理。我可以成功地移动它,但它每隔几帧就会跳跃很多。例如,如果我从底部、从右到顶部、向左拖动,我会偶尔跳转,图像的原点位于底部 75% 的右侧,然后在几帧后返回到它的位置。在我看来这很奇怪,我认为这可能是由于事件或鼠标位置。
我正在通过表单上的 MouseMove 事件更新纹理的位置:
private void MouseMove(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left) {
testSprite.Position = new Vector2(e.X - testSprite.Position.X,
e.Y - testSprite.Position.Y);
}
}
我认为这主要是由于我设置 X 和 Y 值的方式。我在这里做的数学是正确的还是导致我的问题的原因是什么?我选择这样写是因为我不希望纹理的原点(0, 0: top, left)跳转到鼠标位置,而是用鼠标从当前位置平滑移动。
清晰度
- 我分配
X和Y的数学运算是否正确?- 是:还有什么可能导致此跳跃?
- 否:正确的数学是什么?
在调试和尝试不同的方法时,我了解到:
- 将
Position设置为仅e.X,Y可提供流畅的移动。- 但是,这会跳转到不需要的鼠标位置。
【问题讨论】:
标签: c# math drag-and-drop mouseevent draggable