我正在用C#编写一个引脚板,我需要能够在电路板上拖动纸片(注释)。我已经将笔记作为自定义控件,因为我也需要能够在它们上面写。 customcontrol(注释)的背景是一张纸的图像。当我 不 使用backgroundimage时,对于电路板本身,一切都按预期工作。我可以拖动笔记(带有backgroundimage的customcontrols)就好了 - 没有闪烁。当我在棋盘上使用背景图像时(我想要做的,因为纯色背景不能为我剪切),我无法再顺畅地拖动音符。当我开始拖动时,音符消失,并在我停止移动鼠标时首先重新绘制。
我在面板(在它的构造函数中)使用以下代码,我在其中拖动笔记,但它只解决了我的初始屏幕闪烁问题。
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;
}
}
答案 0 :(得分:0)
由于我无法解决我的问题,自定义控件在被拖动到成像背景时消失了,我决定创建一个asp.net版本的项目,而不是一个Windows窗体应用程序。这也可以防止跨平台兼容性的问题。现在使用jQuery
完成拖动