如何解决剪贴板的 C# 图像到 DIB 转换不适用于透明度
我正在尝试使用 C# 将图像文件加载到 Windows 的剪贴板中,以便能够使用 Ctrl+V 将其粘贴到 Discord 中。我使用 Copying From and To Clipboard loses image transparency 中的脚本将图像文件转换为 DIB 格式并将其加载到剪贴板中。然而,透明度没有得到很好的处理,完全透明的区域用黑色填充。 这是一个例子:
- 原始图像文件:
- 从剪贴板以 DIB 格式在 Discord 中粘贴图像:
可以将 PNG 粘贴到 Discord 中并保留透明度,因为我可以右键单击以在 Mozilla 或 Chrome 上复制图像,然后按 ctrl+v 将其粘贴到 Discord 客户端中。查看剪贴板内容显示 Mozilla 在复制图像后存储 DeviceIndependantBitmap
和 Format17
数据格式。
这是我的 CopyToClipboard
函数:
public static void CopyToClipboard(string imagePath)
{
Clipboard.Clear();
Bitmap bmp = new Bitmap(imagePath);
SetClipboardImage(bmp,null,null);
}
其中 SetClipboardImage
函数是直接从上面提到的 post 复制而来的。将 biCompression
值设置为 0 并移除颜色遮罩以匹配 Mozilla 的 DIB 的标头会产生相同的结果。
有人知道为什么会发生这种情况以及如何解决吗? 谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。