我正在用 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;
}
}