0

我正在用 C# 编写一个海报板,我需要能够在板上拖动纸片(笔记)。我已经将笔记作为自定义控件,因为我也需要能够在它们上书写。自定义控件(便笺)的背景是一张纸的图像。当我使用背景图像时,对于电路板本身,一切都按预期工作。我可以很好地拖动笔记(带有背景图像的自定义控件) - 没有闪烁。当我在板上使用背景图像时(我想这样做,因为纯色背景不适合我),我不能再顺利地拖动笔记了。当我开始拖动时,便条消失了,当我停止移动鼠标时,它首先重新绘制。

我在面板上(在其构造函数中)使用以下代码,在其中拖动笔记,但它只解决了我的初始屏幕闪烁问题。

SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);

用于背景的图像文件被导入到项目资源中。我试图将图像文件加载到位图对象中,并将该对象用作面板的背景图像,但这并没有改变任何东西。

下面是一个链接,该链接指向拖动时笔记的外观:

http://i.stack.imgur.com/9LnKj.jpg

下面是我开始拖动笔记时实际外观的图像:

http://i.stack.imgur.com/x0Lf1.png

请询问您是否需要更多详细信息才能帮助我解决我的问题。非常感谢您对问题的任何帮助和建议!提前致谢。

编辑:第二张图片上注释的大小取决于我将它从初始点拖动多远。当我将它拖得比它的大小更远时,我可以让它完全消失。当我停止移动鼠标时,它会重新绘制。

编辑:我使用以下代码来移动笔记:

private void NoteControl_MouseMove(object sender, MouseEventArgs e)        
{
    if (_dragme)
    {
        System.Drawing.Point newLocation = e.Location - mouseOffset;
        this.Left += newLocation.X;
        this.Top += newLocation.Y;
    }
}
4

1 回答 1

0

由于我无法解决自定义控件在图像背景上拖动时消失的问题,因此我决定创建我的项目的 asp.net 版本而不是 Windows 窗体应用程序。这也可以防止跨平台兼容性问题。现在使用 jQuery 完成拖动

于 2013-07-03T10:09:23.790 回答