关于拖动图片,图片跟随鼠标移动的问题 在做一个小游戏,想实现一个如题功能把鼠标选中的图片拖到一个容器中,希望图片能跟随鼠标移动希望能看到大侠的C#代码例子,谢谢有点急,解决问题给分!~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 处理MouseDown、MouseMove、MouseUp三个事件,记录鼠标坐标前后变化,把变化同时体现在要移动的图片上。 谢谢,我也是这样写的代码图片是移动了但是我看不到图片跟着鼠标移动是怎么回事呢 Point p = new Point(); private void pictureBox_MouseDown(object sender, MouseEventArgs e) { p.X = Cursor.Position.X; p.Y = Cursor.Position.Y; } private void pictureBox_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) Cursor = Cursors.SizeAll; else Cursor = Cursors.Default; } private void pictureBox_MouseUp(object sender, MouseEventArgs e) { chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X); chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y); } adai 您好你说的同时体现在移动的图片上能说的详细点么,或者在我上面的代码上怎么体现? chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X); chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y); 添加到mousemove的函数里面试试~ 把MouseUp里的那一段放到Move里去。 动了但是幅度好大啊稍微动了一下,就飞没了。呵呵why? 加点限制试试 if( ((Cursor.Position.X - p.X))<10 && ((Cursor.Position.Y - p.Y)<10) ){ chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X); chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y); } Point p = new Point();Point cp = new Point();//记录要移动的控件的初始位置private void pictureBox_MouseDown(object sender, MouseEventArgs e) { p.X = Cursor.Position.X; p.Y = Cursor.Position.Y; cp.X = pictureBox.Location.X; cp.Y = pictureBox.Location.Y;} private void pictureBox_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left){ pictureBox.Location = new Point(Cursor.Position.X - (p.X - cp.X), Cursor.Position.Y - (p.Y - cp.Y)); }}//Up事件里怎么写自己看着办,不写也行 BMP,TIF文件在C#里如何压缩? 紧急求助,关于C#调用ocx后捕捉ocx的事件问题! !@#$%^&* Windows服务执行bat文件出现的问题 求助csdn兄弟,帮我投一下票,到这个不适合拉票的地方拉票,马上给分~~~ System.Diagnostics.Process如何打开局域网中其他电脑中的一个文件夹??? DataGrid的简单问题? 若何在.net中通过程序自动获取客户端打印机型号(C#语言) WEB打印问题 如果装箱只是值类型转引用类型的话。。那么 input Type="file" C# 结构中的数组如何赋值? 为什么存入到数据库的float型小数点后面的位数增加了
图片是移动了
但是我看不到图片跟着鼠标移动是怎么回事呢 Point p = new Point();
private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
p.X = Cursor.Position.X;
p.Y = Cursor.Position.Y;
} private void pictureBox_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
Cursor = Cursors.SizeAll;
else
Cursor = Cursors.Default;
} private void pictureBox_MouseUp(object sender, MouseEventArgs e)
{
chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X);
chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y);
}
能说的详细点么,或者在我上面的代码上怎么体现?
chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X);
chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y); 添加到mousemove的函数里面试试~
但是幅度好大啊
稍微动了一下,就飞没了。呵呵why?
if( ((Cursor.Position.X - p.X))<10 && ((Cursor.Position.Y - p.Y)<10) )
{
chosePlaneDown.Left = chosePlaneDown.Left + (Cursor.Position.X - p.X);
chosePlaneDown.Top = chosePlaneDown.Top + (Cursor.Position.Y - p.Y);
}
Point cp = new Point();//记录要移动的控件的初始位置private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
p.X = Cursor.Position.X;
p.Y = Cursor.Position.Y;
cp.X = pictureBox.Location.X;
cp.Y = pictureBox.Location.Y;
} private void pictureBox_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left){
pictureBox.Location = new Point(Cursor.Position.X - (p.X - cp.X), Cursor.Position.Y - (p.Y - cp.Y));
}
}//Up事件里怎么写自己看着办,不写也行