C#学习教程:如何在PictureBox中平移图像现在我想给它添加一个平移功能。我的意思是当PictureBox缩放时,如果用户单击并保持单击然后移动鼠标,图像将在picturebox内平移。这是我的代码,但不幸的是它不起作用!我不知道去哪里看...privatePoint_panStartingPoint=Point.Empty;私人布尔_panIsActive;privatevoidCurveBox_MouseDown(objectsender,MouseEventArgse){if(e.Button==MouseButtons.Left){Focus();_panIsActive=真;_panStartingPoint=e.Location;}}privatevoidCurveBox_MouseUp(objectsender,MouseEventArgse){_panIsActive=false;}privatevoidCurveBox_MouseLeave(objectsender,EventArgse){_panIsActive=false;}privatevoidevenderCurveBox_MouseMoves({if(_panIsActive&&IsZoomed){varg=CreateGraphics();//从PictureBox创建图形varnx=_panStartingPoint.X+eX;varny=_panStartingPoint.Y+eY;varsourceRectangle=newRectangle(nx,ny,Image.Width,Image.Height);g.DrawImage(Image,nx,ny,sourceRectangle,GraphicsUnit.Pixel);}}我怀疑MouseMove事件......我不确定是否发生了什么此事件和/或nx和ny确实包含正确的点。非常感谢任何帮助/提示!我认为数学是倒退的。试试这个:privatePointstartingPoint=Point.Empty;私人点movingPoint=Point.Empty;私人布尔平移=假;voidpictureBox1_MouseDown(objectsender,MouseEventArgse){panning=true;startingPoint=newPoint(e.Location.X-movingPoint.X,e.Location.Y-movingPoint.Y);}voidpictureBox1_MouseUp(objectsender,MouseEventArgse){panning=false;}voidpictureBox1_MouseMove(objectsender,MouseEventArgse){if(panning){movingPoint=newPoint(e.Location.X-startingPoint.X,e.Location.Y-startingPoint.Y);pictureBox1.Invalidate();}}voidpictureBox1_Paint(objectsender,PaintEventArgse){e.Graphics.Clear(Color.White);e.Graphics.DrawImage(Image,movingPoint);你没有处理你的图形对象,CreateGraphics只是一个临时绘图(最小化会擦除它)所以我将绘图代码移动到Paint事件,并在用户时间到期时平移它。以上就是《C#学习教程:如何在PictureBox中实现图片共享的平移》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
