C# 具有叠加/不透明图像的拖放效果

Posted

技术标签:

【中文标题】C# 具有叠加/不透明图像的拖放效果【英文标题】:C# Drag and Drop Effect with Overlay/Opaque Image 【发布时间】:2011-06-02 18:31:38 【问题描述】:

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

在 c# WinForm 中我想做拖放,但我不想要 DragDropEffects 移动、复制或其他的图像。我想显示一个半不透明的图像。就像 Firefox 在拖动图像时一样,您会看到图像像幽灵一样跟随鼠标指针 :)

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

【问题讨论】:

【参考方案1】:

参加聚会可能为时已晚 9 年 ?

我一直喜欢拖放交互,但发现它在 WinForms 中使用起来很复杂。特别是如果你想让它看起来很专业,有叠加层。

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

https://github.com/awaescher/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

【讨论】:

以上是关于C# 具有叠加/不透明图像的拖放效果的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSS 为图像添加低调(黑色、透明叠加)效果?

GD图像叠加透明png

叠加在图像上时,使文本显示为白色,具有半透明的黑色背景

C# 模拟 Windows 中的默认拖放功能(拖动过程中的透明图像)

使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层

QGLWidget 上的透明 QGraphicsWebview 导致叠加图像