我正在尝试从剪贴板中获取与设备无关的位图。我很清楚这可以通过 .NET Framework 中内置的 Clipboard.GetData 函数来完成,但由于它有很多错误(如网络上的许多地方所记录的那样),我只想使用 API。
我编写了以下有效的代码。
//i can correctly cast this to a MemoryStream
MemoryStream ms = Clipboard.GetData("DeviceIndependentBitmap") as MemoryStream;
但我想将它与 API 一起使用,它只是返回一个以某种方式指向流的指针(一个 IntPtr)。我看了一下UnmanagedMemoryStream但不明白如何正确地将其转换IntPtr
为那个。
这是我的 API 代码(使用GetClipboardData API,其中将CF_DIB
格式设置为其参数)。
IntPtr p = GetClipboardData(8);
//what do I do from here to get a MemoryStream from this pointer?
我有点困惑。我自己已经研究过了,但想不出有用的东西。