我正在处理类似这样的代码(从这里)
using (var bmp = new System.Drawing.Bitmap(1000, 1000))
{
IntPtr hBitmap = bmp.GetHbitmap();
var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap, IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
并且 MSDN 说,每当我打电话时,Bitmap.GetHbitmap()
我都必须调用DeleteObject()
以hBitmap
释放非托管资源。
我见过的所有答案和 MSDN 都说我必须 P/Invoke 该DeleteObject()
功能。这看起来有点疯狂,因为我获得了hBitmap
没有 P/Invoke,现在我突然需要使用 P/Invoke 来正确摆脱它。
除了 P/Invoke 确实没有其他方法可以DeleteObject()
调用我的hBitmap
吗?