你好所有即时创建一个游戏,用户可以拖放图片框。我设法做到了但我不喜欢它拖动图片框时的行为。使用此代码
private void myPictureBox_MouseDown(object sender, MouseEventArgs e)
{
isDragging = true;
currentX = e.X;
currentY = e.Y;
}
private void myPictureBox_MouseMove(object sender, MouseEventArgs e)
{
Control control = (Control)sender;
if (isDragging)
{
control.Top = control.Top + (e.Y - currentY);
control.Left = control.Left +(e.X - currentX);
}
}
private void myPictureBox_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
}
它的行为类似this (video 1)所以我把.update()放到它上面
private void myPictureBox_MouseDown(object sender, MouseEventArgs e)
{
isDragging = true;
currentX = e.X;
currentY = e.Y;
}
private void myPictureBox_MouseMove(object sender, MouseEventArgs e)
{
Control control = (Control)sender;
if (isDragging)
{
control.Top = control.Top + (e.Y - currentY);
control.Left = control.Left +(e.X - currentX);
control.update();
}
}
private void myPictureBox_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
}
但因为它在if循环中表现得像this (video 2)。你有什么建议吗?提前谢谢。
答案 0 :(得分:0)
尝试为所有图片框及其所在的控件设置双缓冲
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
如果这不起作用,你需要自己进行绘图(并不难)使用双缓冲区设置。
答案 1 :(得分:0)
我试图重现你正在经历的事情。
当图片框中包含带背景的表单时,会产生与视频相同的效果。当picuter盒子有一个图片框作为背景时,它运行得更好一些。但是,我无法使控件背景透明。
绘制自己的控件的解决方案可以正常工作。
我的建议是,如果你真的想要创造一个游戏。使用已经成功的Unity游戏引擎,XNA可以提高您的工作效率。