问题描述
我正在尝试使用 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 (将#修改为@)