CustomControl“disappears"当拖动在面板/窗体与背景图像

本文关键字:窗体 图像 背景 拖动 disappears quot CustomControl | 更新日期: 2023-09-27 18:18:29

我正在用c#写一个招贴板,我需要能够在板上拖动纸(笔记)。我已经把笔记作为自定义控件,因为我需要能够在它们上面写字。自定义控件(注释)的背景是一张纸的图像。当我使用背景图像时,对于板本身,一切都按预期工作。我可以拖动音符(带有背景图片的自定义控件),没有闪烁。当我在黑板上使用背景图像时(我想这样做,因为纯色背景对我来说不合适),我不能再流畅地拖动音符了。当我开始拖动时,音符消失,并在我停止移动鼠标时第一次重新绘制。

我在面板(在其构造函数中)上使用以下代码,我在其中拖动注释,但它只整理了我最初的屏幕闪烁问题。

SetStyle (ControlStyles。allpaintinginwmppaint |控件样式。OptimizedDoubleBuffer |控件样式。ResizeRedraw |控件样式。UserPaint,真正的);

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

下面是一个图片链接,说明音符被拖拽时的样子:

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

下面的图片显示的是当我开始拖动笔记时的实际样子:

https://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;
    }
}

CustomControl“disappears"当拖动在面板/窗体与背景图像

由于我无法解决自定义控件消失的问题,当被拖到图像背景上时,我决定创建一个asp.net版本的项目,而不是一个windows窗体应用程序。这也避免了跨平台兼容性的问题。现在使用jQuery

完成拖动。