C#拖放效果与叠加/不透明图像

时间:2011-01-03 09:27:34

标签: c# winforms drag-and-drop overlay

我认为这是一个简单的问题,应该在几年内被问到但是无法谷歌并且不知道是否有特定的关键字。

在c#WinForm中我想拖放但我不想要DragDropEffects Move,Copy等等的图像。我想要显示半透明的图像。就像Firefox在拖动图像时一样,你会看到像鼠标一样的鼠标指针图像:)

我已经实现了DoDragDrop,DragEnter和DragDrop事件。我只想用叠加图像自定义拖动效果。

2 个答案:

答案 0 :(得分:5)

检查

Shell Style Drag and Drop in .NET

希望这有帮助

答案 1 :(得分:0)

参加聚会可能为时9年?

我一直很喜欢拖放交互,但是发现在WinForms中使用起来很复杂。尤其是如果您希望它具有叠加效果看起来很专业。

上一次我需要拖放时,我为WinForms创建了自己的库。您可以在这里或在NuGet上找到它:

Drag and Drop operations with FluentDragDrop

这是实现如上所示的拖放操作所需的一切:

private void picControlPreviewBehindCursor_MouseDown(object sender, MouseEventArgs e)
{
    var pic = (PictureBox)sender;

    pic.InitializeDragAndDrop()
        .Copy()
        .Immediately()
        .WithData(pic.Image)
        .WithPreview().BehindCursor()
        .To(PreviewBoxes, (target, data) => target.Image = data);

    // Copy(), Move() or Link() to define allowed effects
    // Immediately() or OnMouseMove() for deferred start on mouse move
    // WithData() to pass any object you like
    // WithPreview() to define your preview and how it should behave
    //     BehindCursor() or RelativeToCursor() to define the preview placement
    // To() to define target controls and how the dragged data should be used on drop
}