圆形框中的更新位置



我正在使用一个图片框移动2个线性阶段;当Mousedown事件触发时,将picturebox坐标重新映射以匹配轴的最大行进长度,然后发送给他们进行运动。

为了改善此功能,我在此图像上添加了一个小点,以跟踪鼠标事件期间鼠标的当前位置。每次鼠标移动时,点都必须更新其表现;为此,我使用了gfx.clear(color.white);删除以前的绘制新的。问题在于,要了解轴的正确定位,图片框应显示轴的照片;但是称为gfx.clear(color)清除图像并留下白色背景。

有没有一种方法可以更新点位置而无需调用gfx.clear(以保留图像?)

if (e.Button.Equals(MouseButtons.Left))
            {
                {
                    this.gridImage.Refresh();
                    convertedX = (e.X * 100) / gridImage.Size.Width;
                    convertedY = (e.Y * 100) / gridImage.Size.Height;
                    using (Graphics gfx = Graphics.FromImage(this.gridImage.Image))
                    {
                        circle_bounds.X = e.X;
                        circle_bounds.Y = e.Y;
                        gfx.Clear(Color.White);
                        gfx.DrawEllipse(Pens.Red, this.circle_bounds);

                    }
                    Console.WriteLine("(X,Y): " + convertedX.ToString() + " " + convertedY.ToString());
                    Thread.Sleep(20);
                    //moveAbs(port1, "1", convertedX.ToString());
                    //moveAbs(port2, "1", convertedY.ToString());
                    initialXText.Text = convertedX.ToString();
                    initialYText.Text = convertedY.ToString();
                }
            }

我要做的就是使用PictureBox.Paint事件来绘制必须跟随鼠标移动的点。首先,我声明Point在移动时存储鼠标位置:

Point mousePosition;

然后,在PictureBox.MouseMove事件处理程序中,我将存储此位置并使PictureBox无效:

private void gridImage_MouseMove(object sender, MouseEventArgs e)
{
    mousePosition = e.Location;
    pictureBox1.Invalidate();
}

最后,在PictureBox.Paint中,我只是使用鼠标位置绘制一个圆圈:

private void gridImage_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawEllipse(Pens.Red, new Rectangle(mousePosition, new Size(5,5)));
}

希望这能使您朝正确的方向

相关内容

  • 没有找到相关文章

最新更新