c#中的拖放行为

时间:2015-03-25 10:43:46

标签: c# drag-and-drop

你好所有即时创建一个游戏,用户可以拖放图片框。我设法做到了但我不喜欢它拖动图片框时的行为。使用此代码

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)。你有什么建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试为所有图片框及其所在的控件设置双缓冲

SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

如果这不起作用,你需要自己进行绘图(并不难)使用双缓冲区设置。

答案 1 :(得分:0)

我试图重现你正在经历的事情。

当图片框中包含带背景的表单时,会产生与视频相同的效果。当picuter盒子有一个图片框作为背景时,它运行得更好一些。但是,我无法使控件背景透明。

绘制自己的控件的解决方案可以正常工作。

我的建议是,如果你真的想要创造一个游戏。使用已经成功的Unity游戏引擎,XNA可以提高您的工作效率。