我有一个应用程序,我将图片框放在面板上。在我为图片框成功实现拖放后,我想添加一个网格选项以方便地在面板上移动图片框。我使用的代码是
private void PB14_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (grid)
{
if (MousePosition.X % 10 == 0)
{
PBList[14].Location = new Point(PList[parent].PointToClient(new Point(MousePosition.X, MousePosition.Y)).X, PBList[14].Location.Y);
}
if (MousePosition.Y % 10 == 0)
{
PBList[14].Location = new Point(PBList[14].Location.X, PList[parent].PointToClient(new Point(MousePosition.X, MousePosition.Y)).Y);
}
}
else
{
...
}
}
}
PList 是一个面板列表,PList[parent] 是图片框(在图片框列表之外)PBList[14] 所在的父级。
问题是 Picturebox 移动不顺畅,有时它根本不动。我发现 % 操作的一些值更好一些更差,例如,如果我把
if (MousePosition.X % 30 == 0)
在 if 语句中,它比 10 差。
我将 if() 的值放在标签中,我看到它有时会跳过计算,这意味着值从 9 跳到 1,跳过了应该为 0 的像素并且 Picturebox 没有移动。
您知道为此目的计算鼠标坐标的更好方法吗?