パネルにピクチャボックスを配置するアプリケーションがあります。ピクチャ ボックスのドラッグ アンド ドロップの実装に成功した後、パネル上でピクチャ ボックスを便利に移動するためのグリッド オプションを追加したいと考えました。私が使用したコードは
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] は (Pictureboxlist の外の) ピクチャボックス PBList[14] が含まれる親です。
問題は、Picturebox がスムーズに動かないことです。まったく動かないこともあります。% 操作の値によっては、より良いものもあれば悪いものもあることがわかりました。
if (MousePosition.X % 30 == 0)
if ステートメントでは、10 より悪いです。
if() の値をラベルに入れると、計算がスキップされることがあることがわかりました。つまり、値が 9 から 1 にジャンプし、0 になるはずのピクセルがスキップされ、Picturebox が移動しませんでした。
この目的のためにマウス座標を計算するより良い方法を知っていますか?