日期:2014-05-19  浏览次数:21017 次

帮我调个程序
bool   bPictureBoxDragging   =   false;
                Point   oPointClicked;
private   void   pictureBox1_MouseDown(object   sender,   MouseEventArgs   e)
                {
                        PictureBox   p   =   (PictureBox)sender;
                        pictureBox1.Cursor   =   Cursors.Hand;
                        bPictureBoxDragging   =   true;
                        oPointClicked   =   e.Location;
                }
private   void   pictureBox1_MouseMove(object   sender,   MouseEventArgs   e)
                {
                        if   (bPictureBoxDragging)
                        {
                                DoubleBuffered   =   true;
                                Point   oMoveToPoint;
                                oMoveToPoint   =   pictureBox1.PointToScreen(e.Location);
                    oMoveToPoint.Offset(oPointClicked.X   *   -1,   oPointClicked.Y   *   -1);
                                pictureBox1.Location   =   oMoveToPoint;
                        }
                }

                private   void   pictureBox1_MouseUp(object   sender,   MouseEventArgs   e)
                {
                        bPictureBoxDragging   =   false;
                        pictureBox1.Cursor   =   Cursors.Arrow;
                }  

大家帮我看看,为什么鼠标按下移动的时候图片会跳一下??怎么解决?


------解决方案--------------------
我用的vs2003,怎么MouseEventArgs e,没有Location这个属性,难道楼主用的2005?
pictureBox1.Location = oMoveToPoint//有这句话,图片的位置当然会随鼠标变化了
------解决方案--------------------
你这样来做试试看:
Point lastPoint = Point.Empty;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
PictureBox box = sender as PictureBox;
if (box.Capture)
{
Point loc = box.Location;
loc.Offset(e.Location.X - lastPoint.X, e.Location.Y - lastPoint.Y);
box.Location = loc;
}
}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
lastPoint = e.Location;
}
------解决方案--------------------